Ich habe einen winzigen Heimserver hinter meinem Kabelmodem (Bresnan-Kommunikation). Ich möchte in der Lage sein, dass diese Box E-Mails für Benachrichtigungen und so weiter sendet (nicht empfängt).
Was ich schon gemacht habe:
- Ich habe sendmail installiert und konfiguriert.
- Ich habe
mail.bresnan.net
als meineSMART_HOST
Richtlinie hinzugefügt .
Was ich glaube, ist das Problem
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=<201012221724.oBMHOHrs001530@bresnan.net>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<aburns@bresnan.net>,
size=397, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<my@work-address.com>, 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=<my@work-address.com>, ctladdr=<aburns@bresnan.net>
(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 sie dann versucht, sie an den Server von bresnan weiterzuleiten, und es tritt eine Zeitüberschreitung auf.
Hier ist meine Frage. Asstute-Leser werden feststellen, dass dies pmx0.bresnan.net
nicht das ist, als was ich meine SMART_HOST
Richtlinie festgelegt habe. Dies ist der (externe?) MX
Server für die Domain bresnan.com/net. Anscheinend hat bresnan sein Netzwerk so konfiguriert, dass Sie nicht von seinem eigenen Netzwerk aus auf diesen Server zugreifen können und stattdessen den mail.bresnan.net
Server verwenden müssen (mit dem ich mich verbinden kann). Das Problem ist, dass ich sendmail nicht anweisen kann, diesen Server und nicht die Domain zu verwenden .
Was ich versucht habe
- Festlegen eines Hosteintrags, sodass der pmx0-Server auf die E-Mail-IP-Adresse verweist. Dies funktioniert nicht, was sinnvoll ist, da sendmail offensichtlich eine MX-Abfrage durchführt, um den Server zu finden, der die IP zurückgibt, sodass keine "normale" DNS-Auflösung erforderlich ist, damit die Hosts-Datei niemals beteiligt wird.
Das Update (für alle ausgehenden E-Mails):
Wieder gehen Requisiten an Webmin (siehe Hinweis unten), um mir dabei zu helfen, dies zu lernen. Wenn Sie Ihren Smarthost mit eckigen Klammern eingeben, die sendmail anweisen, keine MX-Suche define('SMART_HOST','[69.145.248.18]')
durchzuführen, funktioniert Folgendes : (Korrigieren Sie die Anführungszeichen-> Backticks) tatsächlich ohne Mailer-Tabelle.
Der Fix (für bestimmte Domains):
Wie unten ausgeführt, ist das Einrichten von a mailertable
erforderlich. Wie in der Manpage erwähnt , muss diese Funktion jedoch auch in Ihrer sendmail.mc
Datei aktiviert sein .
Beachten Sie außerdem, dass die Mailerroute sendmail nicht zwingt, den angegebenen Server für alle Vorgänge zu verwenden. Sie basiert auf der Adresse des Empfängers. Dies ist für mich eigentlich in Ordnung, da ich nur an einige wenige Domains senden muss (Google Mail, Google Hosted und meine Arbeit).
Zusammenfassung :
- In
FEATURE('mailertable')
auf Ihresendmail.mc
Datei. (Beachten Sie, dass das erste Zitat ein Backtick sein sollte. - Erstellen Sie Ihre
/etc/mail/mailertable
Datei (siehe Manpage ) - 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
HINWEIS: Ich hoch diese Dateien mit WebMin zu bearbeiten / rebuild empfehlen. Ohne sie wäre ich verrückt geworden, um herauszufinden, warum meine Mailertable-Datei ignoriert wurde.