Ich versuche, sendmail dazu zu bringen, E-Mails an die in den MX-Datensätzen angegebenen Server zu übertragen. Wenn der Server eine E-Mail an [email protected] sendet, möchte ich, dass localhost übersprungen wird und direkt zu Google Mail wechselt.
Ich habe die sendmail-Dokumente durchgesehen, verstehe aber nicht ganz, wie ich meine Situation erklären soll. Der Hostname meines Servers lautet im Wesentlichen "www.domain.com". Wenn ich jedoch eine E-Mail an "[email protected]" sende, landet diese im lokalen Mail-Spool.
Wenn ich sendmail im Debug-Modus ausführe:
sendmail -bt
> $=w
Ich bekomme:
www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___]
Es werden also alle ausgehenden E-Mails abgefangen domain.com
. Ich möchte nicht, dass es ankommt localhost
. Ich möchte, dass es zu Google Mail-Servern geht.
Alle für andere Adressen gebundenen E-Mails funktionieren einwandfrei. Ich habe auch sendmail für die Verwendung von DKIM konfiguriert.
Ich habe mailertable einen Datensatz hinzugefügt (und die mailertable.db neu erstellt und die Datei mc> cf neu kompiliert), bin mir aber nicht sicher, ob ich das tun muss oder ob ich es richtig mache.
domain.com esmtp:[aspmx.l.google.com]
Wie kann ich zulassen, dass E-Mails, die für [email protected] gebunden sind, den Server verlassen?
ZUSÄTZLICHE INFORMATIONEN: Hier ist meine sendmail.mc-Datei:
divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
define(`confDEF_USER_ID', ``8:12'')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
define(`confTO_IDENT', `0')dnl
FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl
EXPOSED_USER(`root')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')
MAILER(smtp)dnl
MAILER(procmail)dnl
Antworten:
Hier habe ich endlich eine ziemlich umfassende Lösung gefunden . Zusammenfassend gibt es eine Reihe von Optionen (von denen die meisten in anderen Antworten erwähnt wurden, aber aus welchen Gründen auch immer in meinem speziellen Szenario nicht funktionierten).
Option 1: Entfernen Sie den Eintrag aus / etc / mail / local-host-names
Für mich war diese Datei bereits leer
Option 2: Entfernen Sie alle LOCAL_DOMAIN-Einträge in der mc-Datei
Ich hatte keine
Option 3: Weisen Sie sendmail an, keine Schnittstellen zu prüfen
In meinem Fall wurde dies festgelegt, aber der problematische Host war immer noch in der Klasse w von sendmail vorhanden
Option 4: Benennen Sie den Server um. Der oben angegebene externe Link sagt sogar ausdrücklich: "Wenn ich whipple.org aus Klasse w entfernen möchte, könnte ich den Server beispielsweise in frodo.whipple.org, www.whipple.org, elvis.whipple.org umbenennen."
für mich war das nicht ausreichend. Mit dem Host namens www.domain.com enthielt die sendmails-Klasse w immer noch BEIDE www.domain.com UND domain.com (auch nach einem Neustart).
Option 5: DAS IST, WAS FÜR MICH ARBEITET HAT, fügen Sie der sendmail mc-Datei ein LOCAL_RULE_0 hinzu
Dies muss am Ende der Datei stehen und
<tab>
ein tatsächliches Tabulatorzeichen seinquelle
bestmx
Karte verwenden, um sie generisch zu machen.Ändern Sie den Hostnamen des Servers. Es gibt keinen gültigen Grund dafür, dass ein Hostname jemals einem nackten Domainnamen entspricht.
quelle
Hier ist mein Verständnis Ihrer Frage:
Sie haben Sendmail installiert, damit Sie damit E-Mails von Ihrer Website senden können.
Sie haben Sendmail als autorisierenden E-Mail-Server für Ihren öffentlichen DNS-Namespace konfiguriert.
Sie möchten nicht, dass Sendmail für Ihren öffentlichen DNS-Namespace maßgeblich ist. Sie möchten, dass E-Mails, die an Ihren öffentlichen DNS-Namespace gesendet werden, an Ihre von Google gehostete E-Mail gesendet werden.
Lösung: Konfigurieren Sie Sendmail so, dass es für Ihren öffentlichen DNS-Namespace nicht autorisierend ist.
quelle
Ich bin nicht sehr erfahren mit der Sendmail-Konfiguration, aber ich denke, es sollte das Richtige in Bezug auf MX-Datensätze tun. Ich stelle mir jedoch vor, dass sendmail vor der DNS-Suche möglicherweise zuerst die lokale Hosts-Datei
/etc/hosts
auf den meisten Unix-basierten Betriebssystemen konsultiert , bevor die DNS-Server verwendet werden. Wenn dies der Fall ist und in der Hosts-Datei ein Eintrag vorhanden ist, der auf Ihren Computer als domain.com verweist, wenn Sie diesen als Hostnamen festlegen, könnte dies der Fall sein. Sie können die Hosts-Datei in diesem speziellen Fall bearbeiten, indem Sie die Einträge ändern oder neue hinzufügen.Oder Sie können sendmail so konfigurieren, dass die lokale Systemhostdatei beim Auflösen von URLs ignoriert wird. Ich bin mir nicht sicher, wie ich das machen soll.
quelle
1) Sendmail füllt automatisch die Liste der lokalen E-Mail-Domains (
$=w
).Sie können es nicht über die folgende Zeile in Ihrer sendmail.mc ausschalten:
Sie können lokale E-Mails "manuell" zur
/etc/mail/local-host-names
Datei hinzufügen .(Es erfordert das HUPen oder Neustarten des sendmail-Daemons nach)
2) Sendmail kann "diesen Host-E-Mail-Namen" (
$j
) zur Liste der lokalen E-Mail-Domänen hinzufügen (automatisch konfigurieren) .Sie können "diesen Host-E-Mail-Namen" definieren.
3)
mailertable
wird NICHT für Lieferungen an Domains konsultiert, die in aufgeführt sind$=w
.quelle
confDONT_PROBE_INTERFACES',
True ') ist bereits (und war schon immer) aktiviertDer Code, der die E-Mail sendet, verwenden Sie eine vollständige E-Mail-Adresse oder lassen Sie den Server sie nur über ein lokales Konto versenden? Weil:
Dies weist sendmail an, alle E-Mails lokal an [email protected] zu senden
Dies weist sendmail an, die Domains in lokalen Adressen in domain.com umzuschreiben, ändert jedoch nichts an der lokalen Zustellung .
Schritt 1: Kehren Sie zur Standardkonfiguration zurück.
Schritt 2: Verwenden Sie die Standardkonfiguration.
quelle