Ich habe hinter meinem Kabelmodem (Bresnan Communications) einen kleinen Heimserver eingerichtet. Ich möchte, dass diese Box E-Mails für Benachrichtigungen und dergleichen versenden (nicht empfangen) kann.
Was ich bereits getan habe:
- Ich habe Sendmail installiert und konfiguriert.
- Ich habe es
mail.bresnan.net
als meineSMART_HOST
Anweisung hinzugefügt.
Ich glaube, das Problem ist
Wenn ich versuche, eine E-Mail zu senden, wird in meinem E-Mail-Protokoll Folgendes angezeigt:
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns,
size=140, class=0, nrcpts=1,
msgid=<[email protected]>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>,
size=397, class=0, nrcpts=1,
msgid=<[email protected]>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<[email protected]>, ctladdr=aburns (1000/1000),
delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30140, relay=[127.0.0.1] [127.0.0.1],
dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
to=<[email protected]>, ctladdr=<[email protected]>
(1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.
Sie können sehen, wo die Nachricht von meinem Sendmail-Server zur Zustellung angenommen wird, wo dann die Übergabe an den Server von Bresnan versucht wird und es zu einer Zeitüberschreitung kommt.
Hier ist meine Frage. Aufmerksame Leser werden bemerken, dass das pmx0.bresnan.net
nicht das ist, was ich SMART_HOST
als Anweisung festgelegt habe. Dies ist der (externe?) MX
Server für die Domäne bresnan.com/net. Anscheinend hat bresnan sein Netzwerk so konfiguriert, dass man von seinem eigenen Netzwerk aus nicht auf diesen Server zugreifen kann und stattdessen den Server verwenden muss mail.bresnan.net
(mit dem ich mich verbinden kann). Das Problem ist, dass ich nicht weiß, wie ich sendmail anweisen kann, dies zu verwenden.Serverund nicht dieDomain.
Was ich versucht habe
- Festlegen eines Hosts-Eintrags, sodass der pmx0-Server auf die E-Mail-IP-Adresse verweist. Dies funktioniert nicht, was aber sinnvoll ist, da sendmail offensichtlich eine MX-Abfrage durchführt, um den Server zu finden, der die IP zurückgibt. Daher ist eine „normale“ DNS-Auflösung nie erforderlich, sodass die Hosts-Datei nie involviert ist.
Der Fix (für alle ausgehenden E-Mails):
Nochmals ein Lob an Webmin (siehe Anmerkung unten), der mir dabei geholfen hat, dies zu lernen. Wenn Sie Ihren Smarthost mit eckigen Klammern eingeben, weist das Sendmail an, keine MX-Suche durchzuführen, also: define('SMART_HOST','[69.145.248.18]')
(Korrigieren Sie die Anführungszeichen->Backticks) funktioniert tatsächlich ohne Mailer-Tabelle.
Die Lösung (für bestimmte Domänen):
Wie unten erläutert, ist die Einrichtung eines mailertable
erforderlich. Wie jedoch in dermanpage, diese Funktion muss auch in Ihrer Datei aktiviert werden sendmail.mc
.
Beachten Sie auch, dass die Mailer-Route Sendmail nicht dazu zwingt, für alle Vorgänge den angegebenen Server zu verwenden, sondern auf der Adresse des Empfängers basiert. Das ist für mich eigentlich in Ordnung, da ich nur an wenige Domänen senden muss (Gmail, Google Hosted und meine Arbeit).
Zusammenfassung:
FEATURE('mailertable')
Zu Ihrer Datei hinzufügensendmail.mc
. (Beachten Sie, dass das erste Anführungszeichen ein Backtick sein sollte.)- Erstellen Sie Ihre
/etc/mail/mailertable
Datei (siehemanpage) - Erstellen Sie eine Map-Datei:
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- Erstellen Sie Ihre Konfigurationen neu
make -C /etc/mail
- Starten Sie sendmail neu:
service sendmail restart
NOTIZ:ICHhöchstIch empfehle, WebMin zum Bearbeiten/Neuaufbau dieser Dateien zu verwenden. Ohne diese Funktion wäre ich verrückt geworden, wenn ich versucht hätte herauszufinden, warum meine Mailertable-Datei ignoriert wurde.
Antwort1
Sie können die MX-Suche umgehen, indem Sie einen kurzen Eintrag in Ihre Sendmail- /etc/mail/mailertable
Datei hinzufügen.
Der Inhalt der Datei sollte wahrscheinlich aus einer einzigen Zeile bestehen, etwa:
bresnan.net esmtp:[69.145.248.18]
Speichern Sie die Datei und starten Sie sendmail neu (oder erstellen Sie Ihre sendmail.cf neu, wenn dies manuell erfolgen muss).