85 lines
3.2 KiB
Markdown
Executable file
85 lines
3.2 KiB
Markdown
Executable file
---
|
|
layout: post
|
|
title: SMTP Relay avec qmail sur Debian Wheezy
|
|
category: Debian
|
|
tag: planet
|
|
---
|
|
|
|
J'ai cherché une alternative plus simple qu'Exim et Postfix pour que mes
|
|
serveurs Debian puissent envoyer des emails d'alerte.<!-- more --> C'est une fonctionnalité
|
|
utile si on installe fail2ban ou logwatch. Je n'ai pas besoin de gérer des
|
|
utilisateurs ou de recevoir des emails, juste d'en envoyer en utilisant le
|
|
serveur SMTP du FAI comme relais. J'ai trouvé
|
|
[**qmail**](http://en.wikipedia.org/wiki/Qmail) en faisant quelques recherches,
|
|
un antique MTA dont la dernière version stable 1.0.3 date de 1998 (gasp !) mais
|
|
qui est toujours disponible dans les dépôts Debian.
|
|
|
|
Avant de lancer l'installation, il faut s'assurer que le hostname du serveur
|
|
est un FQDN, c'est à dire un nom DNS complet. Si ce n'est pas le cas, qmail
|
|
refuse de s'installer. Si le serveur n'a pas de nom DNS, on peut mettre
|
|
n'importe quel domaine, ça ne gêne dans la configuration que nous allons mettre
|
|
en place. On peut modifier le hostname de manière persistente en deux étapes :
|
|
|
|
1. éditer le fichier /etc/hostname
|
|
2. forcer sa mise à jour avec la commande /etc/init.d/hostname.sh
|
|
|
|
L'installation de qmail désinstalle Postfix ou Exim4 car un seul MTA peut
|
|
s'approprier le port 25.
|
|
|
|
apt-get install qmail qmail-run
|
|
|
|
Il s'agit d'un service local, on ne veut surtout pas ouvrir le port 25 sur
|
|
Internet. On peut forcer qmail à n'écouter que sur l'interface loopback en
|
|
modifiant le script de démarrage. Ce n'est pas l'idéal mais vu la fréquence de
|
|
mise à jour de qmail, on ne craint pas trop de voir cette modification écrasée.
|
|
Il faut remplacer *0* par *127.0.0.1* dans le fichier
|
|
**/etc/qmail/qmail-smtpd/run**.
|
|
|
|
Voici la version modifiée :
|
|
|
|
``` shell
|
|
QMAILDUID=`id -u qmaild`
|
|
NOFILESGID=`id -g qmaild`
|
|
MAXSMTPD=`cat /var/lib/qmail/control/concurrencyincoming`
|
|
LOCAL=`head -1 /var/lib/qmail/control/me`
|
|
|
|
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
|
|
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
|
|
echo /var/qmail/supervise/qmail-smtpd/run
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f /var/lib/qmail/control/rcpthosts ]; then
|
|
echo "No /var/lib/qmail/control/rcpthosts!"
|
|
echo "Refusing to start SMTP listener because it'll create an open relay"
|
|
exit 1
|
|
fi
|
|
|
|
exec softlimit -m 7000000 \
|
|
tcpserver -v -R -l "$LOCAL" -x /etc/qmail/tcp.smtp.cdb -c "$MAXSMTPD" \
|
|
-u "$QMAILDUID" -g "$NOFILESGID" 127.0.0.1 smtp qmail-smtpd 2>&1
|
|
```
|
|
|
|
On modifie la configuration pour envoyer des emails en utilisant le serveur
|
|
SMTP Orange en tant que root@orange.fr si on est l'utilisateur root. On
|
|
remplace le contenu du fichier **/etc/qmail/defaulthost** avec ceci :
|
|
|
|
orange.fr
|
|
|
|
On supprime le contenu du fichier **/etc/qmail/defaultdomain** et on configure
|
|
le relais dans le fichier **/etc/qmail/smtproutes** :
|
|
|
|
smtp.orange.fr <utilisateur> <mot de passe>
|
|
|
|
Pour tester on relance qmail :
|
|
|
|
qmailctl stop
|
|
qmailctl start
|
|
|
|
Et on tente l'envoi d'un email avec la commande mail :
|
|
|
|
mail -s "Hello" someone@somewhere.fr
|
|
Ceci est un test
|
|
^D
|
|
|
|
Le fichier de log **/var/log/qmail/current** permet de vérifier l'état de l'envoi.
|