Pourquoi envoyer des mails depuis son serveur?
Il existe plusieurs scénarios pratiques, notamment lorsque l'on configure un cron job (tâche planifiée) et que l'on souhaite recevoir un email en cas de sortie (erreur, rapport, etc.).
Outils utilisés
- postfix pour recevoir les mails des utilisateurs locaux (ex: ceux qui exécuteront les tâches)
- mailutils pour tester l'envoi de mail
Installation
sudo apt-get install postfix mailutils
Un wizard de configuration vous demandera quel type d'installation choisir pour postfix:
Choisissez Satellite system pour que le serveur n'écoute qu'en local.

Il demande ensuite le System mail name, vous pouvez laisser la valeur suggérée.
Ensuite, le wizard demande l'adresse du SMTP relay host, nous allons spécifier l'adresse du serveur de mail d'OVH: [ssl0.ovh.net]:587 (oui avec les "[" et "]").
Le wizard s'achève mais nous devons modifier la configuration pour:
- spécifier un utilisateur/mot de passe pour se connecter au serveur de mail d'OVH, le relay host
- réécrire les adresses mails locales en adresses mails de votre domaine (ex: user@myserver.mylocaldomain → user@mydomain.com) car le relay host n'accepte que les adresses de votre domaine.
- faire en sorte que les mails pour root soient transférés à votre adresse mail
- un petit hack pour afficher un nom sympa lors de la réception du mail
Configurer les credentials du relay host
editez le /etc/postfix/main.cf et ajoutez ces lignes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_security_options = noanonymous
maintenant créez le fichier /etc/postfix/sasl_password
[ ssl0.ovh.net]:587 user@mydomain.com:mot_de_passe
Limitez l'accès au fichier:
sudo chmod go-rwx /etc/postfix/sasl_password
Et créez la map pour postfix:
sudo postmap /etc/postfix/sasl_password
Vous devriez avoir un nouveau fichier sasl_password.db
Réécrire les adresses mail locales:
Ajoutez ceci à la configuration de postfix (/etc/postfix/main.cf):
sender_canonical_maps = hash:/etc/postfix/sender_canonical
Créez le fichier sender_canonical, il faut mettre les noms de domaines locaux et leur correspondance dans le fichier. Le plus simple est de lancer la commande hostname et hostname -f . Chez moi ça donne ceci:
# hostname
fijoosrv02
# hostname -f
fijoosrv02.tiffanet
Dans le fichier sender_canonical mettez ceci:
@myhostname @mydomain.com
@myhostname.localdomain @mydomain.com
A nouveau, il faut créer la map
sudo chmod go-rwx /etc/postfix/sender_canonical
sudo postmap /etc/postfix/sender_canonical
Transférer les mails de root
Il suffit d'ajouter une ligne dans le fichier /etc/aliases, lequel est déjà existant:
root: user@mydomain.com
Et lancer la commande newaliases
Hack pour afficher un nom d'expéditeur:
Quand vous enverrez des mails depuis votre serveur, ils partirons avec l'adresse userlocal@mydomain.com, par exemple root@mydomain.com et le nom de l'envoyeur sera simplement "root". Mais si vous avez plusieurs serveurs, ça pourrait être utile d'avoir "root on myhostname".
Pour cela nous allons changer le gecos des utilisateurs avec la commande chfn:
sudo chfn -f "root on $(hostname)" root
Refaites pour tous les utilisateurs susceptibles d'envoyer des mails.
Tester la configuration
Tout d'abord il faut redémarrer le service postfix:
sudo systemctl restart postfix
Regardez les logs du serveur, selon la version il écrira dans /var/log/mail.log ou via journalctl:
tail -f /var/log/mail.log
# ou
sudo journalctl -xfu postfix.service
Envoyez un mail:
echo "hello world" | mail -s "test subject" someone@example.com
Vous devriez avoir reçu le mail (vérifiez qu'il n'est pas dans les spams):

Surveillez les logs pour voir ce qui se passe, en particulier:
- les erreurs liées à l'authentification
- les lignes avec
from=<...@...> le nom de domaine derrière le @ doit correspondre à ce que vous avez indiqué dans le fichier sender_canonical. Si ce n'est pas le cas, ajustez le ficher sender_canonical pour prendre en compte ce nom de domaine et relancez la commandepostmap sender_canonical, pas besoin de relancer le service.
Testez aussi les envois de mails à root, ils doivent arriver dans la boîte mail spécifiée dans /etc/aliases (ex: echo "test" | mail -s "test" root).
Il se peut qu'un mail soit renvoyé vers l'utilisateur, vous pouvez utiliser la commande mail sans argument pour voir les mails entrants pour votre utilisateur (pensez à tester aussi un sudo mail pour voir ceux de root)
Conclusions
Il est relativement simple de configurer un serveur de mail en mode "satellite" avec OVH, il faut juste connaître l'utilisateur et le mot de passe smtp. Il y a énormément de possibilités de configuration, pour mon utilisation c'est cette méthode qui a retenu mon attention.
Credits:
- La réponse de John Whitlock https://serverfault.com/a/152126