mailx peut utiliser SMTP. Son fichier de configuration est ~/.mailrc
Un exemple est mailx utilisant le SMTP de Gmail.
La configuration peut même être en une seule commande :
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
Si un serveur SMTP normal est utilisé, c'est beaucoup plus facile (voir une introduction détaillée ici) :
mailx -v -s "$EMAIL_SUBJECT" \
-S smtp=smtp://smtp.example.com
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
$TO_EMAIL_ADDRESS
Vous pouvez également les mettre dans le fichier de configuration de mailx ~/.mailrc
Traditionnellement, Unix mail
et les dérivés (et de nombreux autres outils Unix) utilisent le /usr/bin/sendmail
interface, fournie par presque tous les agents de transfert de courrier (MTA - postfix, exim, courier et bien sûr sendmail).
Autrement dit, le mail
le programme ne parle aucun protocole réseau - il transmet le message à sendmail
via stdin, et lui permet de gérer la livraison réelle. (Cela remonte à l'époque où certains mails utilisaient SMTP, certains utilisaient UUCP, certains utilisaient BITNET...)
Une fois qu'un message est mis en file d'attente via sendmail
, le MTA gère la transmission réelle des messages, que ce soit via SMTP ou autre chose. Selon la configuration, il peut soit se connecter directement au MTA de destination, soit relayer le courrier via un autre hôte (également appelé smarthost).
La connexion directe est plus courante sur les serveurs; le relais via smarthost est plus courant sur les ordinateurs personnels sur les connexions domestiques - le relais via votre compte de messagerie Gmail ou FAI/professionnel est essentiel pour éviter les filtres anti-spam "IP dynamique".
(Certains MTA tels que esmtp
ou nullmailer
sont conçus spécifiquement pour les utilisateurs à domicile et toujours utiliser un hôte relais. Ceux-ci ne prennent pas en charge la réception de courrier et sont beaucoup plus légers sur les ressources.)
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
D'autres programmes, principalement les clients graphiques conviviaux tels que Thunderbird ou Outlook, toujours connectez-vous directement à un serveur SMTP relais/smarthost (encore une fois, généralement Gmail ou ISP/serveur SMTP professionnel), qui transmet le message en votre nom.
Le support SMTP natif est présent dans heirloom-mailx
, mais pas dans le traditionnel bsd-mailx
.
app → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox
La troisième méthode - se connecter directement au serveur du destinataire - n'est presque jamais utilisé, et aucun MUA ne le prend en charge. Sur les ordinateurs personnels, son utilisation entraînerait le rejet de votre message (de nombreux spams sont envoyés à partir d'adresses IP d'utilisateurs infectés).
app → [SMTP] → recipient MTA → caught by the spam filter
A partir du mailx(1)
page de manuel, DESCRIPTION section, Options de chaîne sous-section :
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.