2010-05-04 13:17:09 +0000 2010-05-04 13:17:09 +0000
31
31

Versendet mailx Mails über ein SMTP-Relay oder verbindet es sich direkt mit dem Ziel-SMTP-Server?

Angenommen, ich sende eine Mail mit dem folgenden Befehl:

mailx person@x.com

dann versucht mailx zuerst, den SMTP-Server meines ISP herauszufinden, um die Mail weiterzuleiten, oder verbindet es sich direkt. Hängt es davon ab, ob mein PC eine öffentliche IP-Adresse hat oder ob er sich hinter einem NAT befindet. Wie kann ich die Einstellungen von mailx auf meinem PC überprüfen? Wie kann ich dies mit tcpdump verifizieren?

Antworten (4)

31
31
31
2010-12-06 16:37:44 +0000

mailx kann SMTP verwenden. Seine Konfigurationsdatei ist ~/.mailrc

Ein Beispiel ist mailx verwendet Gmails SMTP .

Das configure kann sogar in einem einzigen Befehl stehen:

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 ausführliche 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 dies auch in die Konfigurationsdatei von mailx ~/.mailrc schreiben

29
29
29
2010-05-04 16:16:41 +0000

Traditionell verwenden Unix mail und Derivate (und viele andere Unix-Tools) die /usr/bin/sendmail-Schnittstelle, die von fast allen Mail Transfer Agents (MTAs - Postfix, Exim, Courier und natürlich Sendmail) bereitgestellt wird.

Das heißt, das Programm mail spricht kein Netzwerkprotokoll - es füttert sendmail über stdin mit der Nachricht und überlässt ihm die eigentliche Zustellung. (Das stammt noch aus der Zeit, als manche Mails SMTP, manche UUCP, manche BITNET benutzten…)

Sobald eine Nachricht durch sendmail in die Warteschlange gestellt wurde, kümmert sich der MTA um die tatsächliche Übertragung der Nachricht, ob über SMTP oder etwas anderes. Je nach Konfiguration kann er sich entweder direkt mit dem Ziel-MTA verbinden oder Mails über einen anderen Host (auch Smarthost genannt) weiterleiten.

Die direkte Verbindung ist auf Servern üblicher; die Weiterleitung über einen Smarthost ist auf PCs mit Heimanschlüssen üblicher - die Weiterleitung über Ihr Gmail- oder ISP-/Arbeits-E-Mail-Konto ist wichtig, um die pauschalen “dynamischen IP”-Anti-Spam-Filter zu umgehen.

(Einige MTAs wie esmtp oder nullmailer sind speziell für Privatanwender gebaut und verwenden immer einen Relayhost. Diese unterstützen den Empfang von Mails nicht und sind wesentlich ressourcenschonender).

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, vor allem die benutzerfreundlichen grafischen Clients wie Thunderbird oder Outlook, stellen immer eine direkte Verbindung zu einem Relay-/Smarthost-SMTP-Server her (auch hier in der Regel Gmail oder ein SMTP-Server des ISP/Arbeitsplatzes), der die Nachricht in Ihrem Namen überträgt.

Native SMTP-Unterstützung ist in heirloom-mailx vorhanden, 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 kein MUA unterstützt sie. Auf PCs würde die Verwendung dieser Methode dazu führen, dass Ihre Nachricht zurückgewiesen wird (eine Menge Spam wird von infizierten IP-Adressen von Privatanwendern gesendet).

app → [SMTP] → recipient MTA → caught by the spam filter
3
3
3
2010-05-04 13:27:27 +0000

Aus der Manpage mailx(1), Abschnitt DESCRIPTION, Unterabschnitt String Options:

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.
1
1
1
2014-01-27 09:06:23 +0000

es gibt eine Alternative ohne lokales 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.