ssmtp
ssmtp permet à des applications d'envoyer des courriels via la commande /usr/sbin/sendmail
. Contrairement à postfix, il ne fait que rediriger les courriers vers un serveur SMTP externe. C'est donc un outil très léger et rapide, et qui ne demande que très peu de paramétrage.
A quoi cela peut servir ?
ssmtp peut permettre facilement :
- à CRON, ou encore à la commande at, de publier leurs résultats ;
- d'envoyer des courriels via le terminal ;
- aux CMS et LMS d'un environnement de développement lampp d'envoyer des courriels via sendmail (ex : tester les messages envoyés par Drupal ou Spip).
Si vous voulez savoir si vous pouvez utiliser sendmail avant cette installation, entrez :
whereis sendmail
Si vous n'avez rien, l'installation et la configuration de ssmtp vous permettra d'utiliser sendmail.
Alternatives
- Pour envoyer un courriel en ligne de commande consultez cette page.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
- Disposer d'un compte de courriel, connaître son mot de passe et le serveur smtp du service de courriel.
Installation
Testez la commande suivante :
whereis sendmail
Cette commande devrait renvoyer une réponse du type sendmail : /usr/sbin/sendmail
. Utilisez cette réponse dans la commande suivante :
ls -la /usr/sbin/sendmail
Si la configuration est correcte, sendmail devrait dorénavant être relié à ssmtp, et donc la commande précédente devrait retourner un message comme /usr/sbin/sendmail → ssmtp
.
Configuration
Il y a 2 fichiers à configurer.
Configuration de ssmtp.conf
Ouvrez le fichier le fichier /etc/ssmtp/ssmtp.conf avec les droits d'administration. Commencez par :
La configuration de root
# Config file for sSMTP sendmail # # Tous les utilisateurs avec un uid < 1000 enverront un courriel avec ce nom # Laissez vide ou commentez la ligne pour déactiver la réécriture root=votre_identifiant@fournisseur.com
Vous pouvez mettre ici votre adresse de courriel.
La configurationd'AuthUser
send-mail: Authorization failed (535 5.7.0 authentication failed) Can't send mail: sendmail process failed with error code 1
# Nom d'utilisateur du compte email avec lequel vous envoyer les courriels AuthUser=votre_identifiant@fournisseur.com
Mettez donc l'identifiant qui vous permet d'accéder à la boîte de messagerie. Cela peut être du type votre_identifiant@fournisseur.com OU votre_identifiant OU votre_identifiant+fournisseur.com (remplacez @ par +). Pour info, le choix entre les 3 possibilités dépend de la configuration du serveur smtp. Par exemple, pour moi, ça a fonctionné avec votre_identifiant@fournisseur.com.
Configuration d'AuthPass
# Mot de passe de ce même compte AuthPass=le_mot_de_passe_utilisé_pour_votre_identifiant@fournisseur.com
Mettez ici votre mot de passe.
sudo chmod 600 /etc/ssmtp/ssmtp.conf sudo useradd ssmtp -g nogroup -s /sbin/nologin -c "sSMTP pseudo-user" sudo chown ssmtp /etc/ssmtp/ssmtp.conf
Une autre proposition d'opérations de sécurisation a été trouvée sur le net (source perdue malheureusement) qui semble plus complète :
sudo chown root:mail /usr/sbin/ssmtp /etc/ssmtp{,/{ssmtp.conf,revaliases}} sudo chmod 2711 /usr/sbin/ssmtp sudo chmod o-rwx /etc/ssmtp /etc/ssmtp/ssmtp.conf; # 0750, 0640 sudo dpkg-statoverride --add root mail 2711 /usr/sbin/ssmtp sudo dpkg-statoverride --add root mail 0750 /etc/ssmtp sudo dpkg-statoverride --add root mail 0640 /etc/ssmtp/ssmtp.conf sudo dpkg-statoverride --add root mail 0644 /etc/ssmtp/revaliases
Configuration de mailhub
# The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=mail.fournisseur.com:587
Mettez ici le serveur SMTP que vous allez utiliser, de cette manière ssmtp saura où faire parvenir vos courriels (cf. Prérequis si vous ne savez pas quel est le votre). Les chiffres après les deux points indiquent le port qui va être utilisé lors du contact du serveur smtp. 465 serait le port standard pour les connections SMPTP protégées par TLS et SSL (cf. plus bas). Pour utiliser des connections non cryptées vous pouvez mettre 25 (le port par defaut) ou 587 si par exemple votre FAI bloque le port 25 (mais selon votre fournisseur de service de messagerie, les ports 25 ou 587 peuvent aussi utiliser TLS).
Configuration de rewriteDomain
# Where will the mail seem to come from? rewriteDomain=fournisseur.com
Ceci indique à ssmtp que l'entête de votre courriel doit être modifiée afin que le nom de domaine (texte après @, par exemple fournisseur.com pour votre_identifiant@fournisseur.com ) soit répertorié comme source de votre adresse de courriel. Attention, si vous mettez autre un "fournisseur.com" différent de votre réel votre_identifiant@fournisseur.com, le message pourra ne pas être reçu par votre destinataire. Si vous commentez cette partie (avec #) le message peut être reçu et votre propre "fournisseur.com" sera utilisé.
Configuration de hostname
# The full hostname hostname=nom_de_votre_ordinateur.domain
Hostname indique ici le nom de votre ordinateur utilisé pour écrire et envoyer les courriels. La partie .domain peut ou ne pas être mentionné. Vous pouvez entrez dans un terminal
hostname
pour connaître votre nom d'ordinateur.
Note : On dirait que ça n'a pas d'incidence sur la possibilité ou non d'envoyer des courriels.
Configuration de FromLineOverride
# Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address FromLineOverride=YES
Mettre YES permet au programme qui envoie un courriel de modifier l'entête du message concernant l'émetteur.
# Utilisation d'une connexion sécurisée SSL/TLS (décommenter pour activer) #UseTLS=YES
Décommenter UseTLS=YES permet d'encrypter la connexion au serveur SMTP et de protéger votre nom d'utilisateur et mot de passe.
send-mail: Connection lost in middle of processing Can't send mail: sendmail process failed with error code 1
, c'est peut être lié à un problème d'utilisation de TLS. Commenter UseTLS=YES peut permettre de résoudre le problème.
root=pierre.kiroul@gmail.com # Your email address UseSTARTTLS=YES mailhub=smtp.gmail.com:587 # Address and port number to send mail to AuthUser=pierre.kiroul@gmail.com # Your Username AuthPass=123poireau # Your Password rewriteDomain= # So the message appears to come from FAI FromLineOverride=YES # So the message appears to come from FAI hostname=pierre.kiroul@gmail.com # Hostname: use hostname -f in a Terminal
Configuration de revaliases
Passons maintenant au deuxième et dernier fichier à éditer. Ouvrez le fichier le fichier /etc/ssmtp/revaliases avec les droits d'administration, et appliquez les modifications suivantes :
# sSMTP aliases # # Format: local_account:outgoing_address:mailhub # # Example: root:your_login@your.domain:mailhub.your.domain[:port] # where [:port] is an optional port number that defaults to 25. root:votre_identifiant@fournisseur.com:mail.fournisseur.com:587 # Other System user: (for Apache) # www-data:votre_identifiant@fournisseur.com:mail.fournisseur.com:587
Où mail.fournisseur.com le serveur smtp de votre fournisseur de service de messagerie et 587 le port utilisé.
# sSMTP aliases # # Format: local_account:outgoing_address:mailhub # root:pierre.kiroul@gmail.com:smtp.gmail.com:587 pierre:pierre.kiroul@gmail.com:smtp.gmail.com:587
Ouverture des ports
Selon la configuration de votre pare-feu et/ou de votre box/routeur, vous pouvez être appelé(e) à permettre le trafic sur les ports utilisés pour la messagerie. Normalement ces ports ont déjà été ouverts pour fonctionner avec votre client de messagerie favori, toutefois pour certaines configurations particulières il a paru utile de rappeler ce pré-requis technique.
Ouverture des ports avec ufw (il est également possible de réaliser ces paramétrages en mode graphique avec ufw) :
- Ouverture du port 25 en tcp en sortie (smtp simple) :
sudo ufw allow out 25/tcp
- Ouverture du port 465 en tcp en sortie (smtp sécurisé) :
sudo ufw allow out 465/tcp
- Ouverture du port 587 en tcp en sortie (smtp sécurisé avec TLS/SSL) :
sudo ufw allow out 587/tcp
Utilisation
En Ligne de commande
Une fois ssmtp configuré, vous pouvez installez le paquet xmail et envoyer un courriel avec la commande suivante :
echo Contenu du message | mail -v -s "sujet du courriel" lecourrielpourlequelvoussouhaitezrecevoirlemessage@blabla.com
si vous avez installé mailutils :
echo Contenu du message | mail -s "TEST" -t email@destinataire.com -a From:email@expediteur.com
Vous pourrez ainsi vérifier la configuration de ssmtp.conf et essayer de modifier certains paramètres sur ce dernier.
Paramétrer pour LAMP (fonction mail() de PHP)
Ouvrez le fichier /etc/php5/apache2/php.ini
et éditez la ligne suivante1) :
sendmail_path = /usr/sbin/ssmtp -t
et ne pas oublier de redémarrer le serveur PHP avec la commande:
sudo service apache2 restart
Accéder aux logs
Les logs des courriels partis :
tail /var/log/mail.log
Les logs des courriels dont le départ a échoué :
tail /var/log/mail.err
Pour aller plus loin
- Consulter les man de ssmtp :
man ssmtp
man ssmtp.conf
Désinstallation
Pour supprimer cette application, il suffit de supprimer son paquet. La configuration de l'application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez.
Liens
Autres liens :
- (fr) http://forum.ubuntu-fr.org/viewtopic.php?id=137722 Régler ssmtp pour fonctionner avec Gmail + résolutions d'autres problèmes ;
- (fr) http://forum.ubuntu-fr.org/viewtopic.php?id=217202 Exemple de configuration.
- (en) https://cloud-support.engineyard.com/faqs/questions/ssmtp Conseils sur la configuration de ssmtp.
Contributeurs principaux : elpepe
ssmtp