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?

Author: Rohit Banga, 2010-05-04

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
 32
Author: user1686,
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

 34
Author: ericzma,
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.
 4
Author: Ignacio Vazquez-Abrams,
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.

 1
Author: StefanKaerst,
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