Sendet mailx E-Mails über ein SMTP-Relay oder stellt es eine direkte Verbindung zum Ziel-SMTP-Server her?
Angenommen, ich sende eine Mail mit dem folgenden Befehl:
mailx [email protected]
Dann versucht mailx zuerst, den SMTP-Server meines ISP für die Weiterleitung der Mail herauszufinden, oder stellt er eine direkte Verbindung her. Hängt es davon ab, ob mein PC eine öffentliche IP-Adresse hat oder sich hinter einem NAT befindet. Wie überprüfe ich die Einstellungen von mailx auf meinem PC? Wie kann ich dies mit tcpdump überprüfen?
4 answers
Traditionell verwenden Unix mail
und Derivate (und viele andere Unix – Tools) die Schnittstelle /usr/bin/sendmail
, die von fast allen Mailübertragungsagenten (MTAs-postfix, exim, Courier und natürlich Sendmail) bereitgestellt wird.
Das heißt, das Programm mail
spricht kein Netzwerkprotokoll – es speist die Nachricht über stdin an sendmail
und lässt sie die tatsächliche Lieferung verarbeiten. (Dies geht zurück auf die Tage, als einige Mail SMTP verwendet, einige verwendet UUCP, einige verwendet BITNET...)
Sobald eine Nachricht in der Warteschlange steht sendmail
, der MTA übernimmt die tatsächliche Nachrichtenübertragung, ob über SMTP oder etwas anderes. Abhängig von der Konfiguration kann es entweder eine direkte Verbindung zum Ziel-MTA herstellen oder E-Mails über einen anderen Host (auch Smarthost genannt) weiterleiten.
Direkte Verbindung ist häufiger auf Servern; Relay über smarthost ist häufiger auf PCS auf Heimverbindungen-Relaying über Ihre Google Mail oder ISP / Arbeit E-Mail-Konto ist wichtig, um die Decke "dynamische IP" Anti-Spam zu vermeiden Preisauswahl.
(Einige MTAs wie esmtp
oder nullmailer
wurden speziell für Heimanwender entwickelt und verwendet immer einen Relayhost. Diese unterstützen den Empfang von E-Mails nicht und sind viel leichter auf Ressourcen.)
mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → recipient MTA → recipient inbox
mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox
Andere Programme, meist die benutzerfreundliche grafische Clients wie Thunderbird oder Outlook, immer eine direkte Verbindung zu einem Relay/smarthost SMTP-Server (wieder in der Regel Google Mail oder ISP / work SMTP-Server), die die Nachricht auf Ihrem Namen.
Native SMTP-Unterstützung ist vorhanden in heirloom-mailx
, aber nicht im traditionellen bsd-mailx
.
app → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox
Die dritte Methode-die direkte Verbindung zum Server des Empfängers-wird fast nie verwendet, und keine MUA unterstützt sie. Auf PCS würde die Verwendung dazu führen, dass Ihre Nachricht abgelehnt wird (eine Menge Spam wird von infizierten IP-Adressen der Heimanwender gesendet).
app → [SMTP] → recipient MTA → caught by the spam filter
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-07-23 12:17:01
Mailx kann SMTP verwenden. Die Konfigurationsdatei ist~/.mailrc
Ein Beispiel ist mailx mit dem SMTP von Google Mail.
Die Konfiguration kann sogar in einem Befehl erfolgen:
mailx -v -s "$EMAIL_SUBJECT" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://smtp.gmail.com:587 \
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
-S smtp-auth-user=$FROM_EMAIL_ADDRESS \
-S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
-S ssl-verify=ignore \
-S nss-config-dir=~/.mozilla/firefox/xxxxxxxx.default/ \
$TO_EMAIL_ADDRESS
Wenn ein normaler SMTP-Server verwendet wird, ist es viel einfacher (siehe eine detaillierte Einführung hier):
mailx -v -s "$EMAIL_SUBJECT" \
-S smtp=smtp://smtp.example.com
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
$TO_EMAIL_ADDRESS
Sie können diese auch in die Konfigurationsdatei ~/von mailx einfügen.mailrc
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-03-19 15:09:26
Von der mailx(1)
Manpage, BESCHREIBUNG Abschnitt, String-Optionen Unterabschnitt:
smtp Normally, mailx invokes sendmail(8) directly to transfer
messages. If the smtp variable is set, a SMTP connection
to the server specified by the value of this variable is
used instead.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-04 13:36:50
Es gibt eine Alternative ohne lokale mta wie sendmail / postix.
Debian-Paket - ssmtp
Info aus rpm Beschreibung:
Summary : Extremely simple MTA to get mail off the system to a Mailhub
URL : http://packages.debian.org/stable/mail/ssmtp
License : GPLv2+
Description : A secure, effective and simple way of getting mail off a system to your mail
: hub. It contains no suid-binaries or other dangerous things - no mail spool
: to poke around in, and no daemons running in the background. Mail is simply
: forwarded to the configured mailhost. Extremely easy configuration.
Hth
Stefan K.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-01-27 09:06:23