Serveur Dédié: Envoyer des emails
# Par Neck le dimanche 16 mars 2008, 22h45 (Informatique)
Avec la configuration actuelle, notre serveur effectue quotidiennement un certain nombre d'actions de maintenance. Le problème est que leurs résultats sont stockés sur le serveur lui-même, rendant la récupération fastidieuse.
Une solution consiste à les envoyer par email. Pour ce faire nous avons deux possibilités, soit un véritable serveur d'envoi (SMTP), soit un programme qui relaie les demandes.
Mon choix s'est porté, du moins pour le moment, sur la deuxième solution. En effet, installer et configurer un serveur SMTP complet semble être relativement complexe, et mal le faire c'est risquer de voir son serveur transformé en usine à spam. J'y repenserai peut-être une fois les choses plus urgentes finies.
Installation
Le programme qui va se charger de faire suivre les emails est msmtp, il est aussi possible de se tourner vers esmtp ou numailer (non testés). Je conseil d'installer également les certificats qui permettrons d'utiliser une connexion sécurisée.
# apt-get install msmtp ca-certificates
Configuration
Étant donné que msmtp ne fait que transmettre plus loin, il nécessite un serveur d'envoi comme destination finale. J'ai pour ma part utilisé l'une des cinq adresses que Gandi offre par domaine, cependant n'importe quel service permettant un accès SMTP peut convenir.
On créer le fichier de configuration:
# nano /etc/msmtprc
# Configuration par défaut. account default # Adresse de provenance pour le serveur smtp. # Cette dernière n'appairait pas dans l'email final mais l'envoi sera normalement refusé si elle est erronée. from <votre adresse>@<votre domaine> # Serveur smtp à utiliser. # Hôte, par exemple mail.gandi.net. host <serveur smtp> # Port à utiliser. # 25 par défaut (587 pour Gandi en mode sécurisé). port <port> # Le domaine du serveur, par exemple eikylon.net. domain <votre domaine> # Authentification activée auth on # Nom d'utilisateur à utiliser pour la connexion. # Généralement <votre adresse>@<votre domaine>. user <utilisateur> password <mot de passe> # Pour utiliser une connexion sécurisée sinon remplacer par "off". tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt # Utiliser /var/log/msmtp.log plutôt que les log systèmes. logfile /var/log/msmtp.log syslog off
Ensuite on créer le fichier de log et on permet aux gens d'y écrire.
# touch /var/log/msmtp.log # chmod o+w /var/log/msmtp.log
À propos des mesures anti-spam
Si vous envoyez un email minimal maintenant il est probable que vous ne le receviez jamais.
Car si la configuration est bonne, le message lui ne contiendrait pas assez d'informations. Du coup il aurait de très fortes chances de ne pas passer à travers les mesures anti-spam (que ce soit lors de l'envoi ou de la réception).
D'après mon expérience, afin que tout se passe correctement, il faut au moins renseigner les entêtes "From" et "To". Ces derniers sont ajoutés au début du message sous la forme Nom: Valeur. Ils sont séparé entre eux par un retour à la ligne, pour noter le début du message on double ce retour.
Tester l'installation
Voici une commande qui vous permet de faire un test en tenant compte des considérations du point précédent:
// L'adresse d'envoi est celle renseignée dans la configuration, l'adresse de destination est libre. // Noter l'option "-t" qui demande à msmtp de lire l'entête "To" pour trouver le destinataire. $ echo -e 'From: <adresse d'envoi>\r\nTo: <adresse de réception>\r\nSubject: Test\r\n\r\n Ceci est un message de test' | msmtp -t
Utilisation
Si le test est concluant, on peut modifier les commandes dans le cron afin qu'elles déclenchent l'envoie d'un mail.
// Effectuer cette commande en tant qu'administrateur, // sans quoi le cron n'aura pas les droits nécessaires. # crontab -e
# Mises à jour, à la place de: # 30 5 * * * (apt-get update -qq && apt-get upgrade -y -q) > /var/log/update.log 30 5 * * * (echo -e 'From: <adresse d'envoi>\r\nTo: <adresse de réception>\r\nSubject: Mises à jour\r\n\r\n'; (apt-get update -qq && apt-get upgrade -y -q)) | /usr/bin/msmtp -t # Chkrootkit, à la place de: # 35 5 * * * chkrootkit > /var/log/rootkit.log 35 5 * * * (echo -e 'From: <adresse d'envoi>\r\nTo: <adresse de réception>\r\nSubject: Chkrootkit\r\n\r\n'; chkrootkit) | /usr/bin/msmtp -t
Références
- MarcArea.com: Envoyer des emails avec Gmail via PHP et msmtp (msmtp).
- Groupes Gandi: Installation serveur SMTP sur hébergement (serveur SMTP complet).
- Documentation Ubuntu Francophone: serveur mail (serveur SMTP complet).
Sommaire | Dernière modification le 16 mars 2008

Commentaires
Bon, j'arrive à rien avec msmtp…
J'ai des choses du genre:
msmtp: cannot connect to mail.gandi.net, port 587: Connexion terminée par expiration du délai d'attente
msmtp: could not send mail (account default from /etc/msmtprc)
ou encore:
msmtp: cannot connect to smtp.gmail.com, port 25: Connexion terminée par expiration du délai d'attente
msmtp: could not send mail (account gmail from /etc/msmtprc)
...
Ok je viens de comprendre. J'ai suivi le tutoriel de dew pour iptables (sur Alsacréations), et en reprenant son script j'avais commenté toute la partie SMTP. De plus son script ferme par défaut tous les ports et ne rouvre que certains ports standard (25 pour SMTP), donc même sans avoir rien commenté la connexion au serveur de Gandi n'aurait pas été possible.
Voilà, c'est corrigé. C'est ce qu'on appelle apprendre sur le tas. :D
Bon ben voilà, j'y suis arrivé. J'ai dû batailler quoi... quatre heures là-dessus, facilement. Pour une bête erreur de ma part.
Effectivement si on ferme les sorties ça marche pas (vais peut-être ajouter une note à propos du par-feu moi...).
Ravis que tu aie trouvé la solution tout seul