Retour : Page Principale > sommaire aide > sommaire aide logiciels

Qmailadmin, Qmail, Vpopmail


Utiliser Qmail comme relais pour un autre MTA

Pour toutes les machines envoyant du courrier à des destinataires autres que @tela-botanica.org, il est avantageux d'utiliser Qmail (plus exactement : d'utiliser le serveur de courrier déjà configuré pour envoyer à l'extérieur) comme relais : le MTA du serveur (par exemple exim4) n'envoie alors pas directement les courriers mais les transmets à Qmail.
C'est simple en théorie mais compliqué en pratique et la documentation ci-dessous décrit un cheminement qui a permis de faire fonctionner le relais d'Aphyllanthe (exim4) vers Sequoia (Qmail) :

0. configurer l'envoyeur pour utiliser un relais

On admet dans cet exemple que l'expéditeur utilise exim4 et que le relais est Sequoia.
Reconfigurer exim4 comme suit :
dpkg-reconfigure exim4-config

Répondre successivement :
  • Envoi par relais "smarthost" - rĂ©ception SMTP ou fetchmail
  • le fqdn de la machine (important pour la suite), gĂ©nĂ©ralement nomdemachine.tela-botanica.net
  • 127.0.0.1 ; ::1_ (valeur par dĂ©faut)
  • rien (laisser vide)
  • rien (laisser vide)
  • l'IP du relais, dans cet exemple 10.99.34.3 (IP de Sequoia sur le sous-rĂ©seau SupAgro)
  • non
  • non
  • Format "Maildir"
  • non

1. vérifier que Qmail est accessible sur le port 25

Dans le sous-réseau des machines virtuelles notamment, vérifier que le port 25 est ouvert sur la bonne interface; pour avoir une idée de la configuration de Shorewall, voir ici.

2. config de rcpthosts et tcp.smtp

Le fichier /etc/qmail/rcpthosts sert à autoriser le serveur mail à relayer un mail ayant pour destinataire les FQDN listés.
Donc ajoutez les FQDN des adresses destinataires, un par ligne.
Le fichier /etc/tcp.smtp sert à autoriser le serveur mail à relayer un mail provenant des IP listées.
Ajouter une ligne avec l'IP du serveur expéditeur dans /etc/tcp.smtp de la forme :
147.99.34.:allow,RELAYCLIENT=""
L'IP peut ĂȘtre partielle et s'arrĂȘter Ă  un point ("."), pour dĂ©signer un rang d'IPs.
Appliquer les changements avec :
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
qmailctl cdb

Source : https://qmail.jms1.net/relay.shtml

3. attendre

Curieusement, il semble que Qmail mette du temps à accepter les changements. Il n'est pas nécessaire de le redémarrer (ce qui est pénible et risqué) mais il se peut que le relais ne marche pas durant plusieurs heures, et se mette à marcher le lendemain. Mystayrrrre.
Note: est peut-ĂȘtre liĂ© au CRON qui met Ă  jour les destinataires valides et d'autres trucs de Qmail (voir la crontab de Sequoia si < 2017/04, de Cuscuta ensuite).

4. tester

Depuis l'expéditeur :
telnet IP.DU.RELAIS.QMAIL 25
Si ça s'ouvre, on est bon. Si ça refuse ou timeoute, on a un problÚme de ports.

Essai d'envoi de mail avec sendmail, depuis l'expéditeur :
echo "Subject: test relais Qmail" | sendmail -v adresse@du-destinataire.fr

5. débugger

  • vĂ©rifier la file d'attente de l'expĂ©diteur : en gĂ©nĂ©ral avec la commande mailq; si la sortie est non-vide, c'est que des emails sont coincĂ©s
  • vĂ©rifier le log de l'expĂ©diteur : avec exim, lire /var/log/exim4/mainlog ; on peut voir comment la machine s'est identifiĂ©e auprĂšs du relais (l'adresse d'expĂ©dition, incluantle fqdn utilisĂ©), et le code reçu lors de la transmission au relais
  • si on Ă©crit Ă  une liste (ex: dev-log@), vĂ©rifier que l'expĂ©diteur du message (gĂ©nĂ©ralement root@fqdn) est autorisĂ© Ă  poster dans la liste

ProblĂšme: pas de reception de mail aprĂšs suppression d'une notification d'abscence

Se connecter en ssh sur le serveur.
Se rendre dans la boite mail de l'utilisateur : cd /home/vpopmail/domains/tela-botanica.org/utilisateur
Vérifier qu'il n'existe pas un fichier .qmail restant dans ce dossier : ls -al
Le renommer en .qmail.sauv : mv .qmail .qmail.sauv
Vérifier que la boite mail a retrouvé son bon fonctionnement.

Les trucs chelous Ă  savoir sur Qmail

DĂ©marrage et arrĂȘt du service
  • il ne faut JAMAIS toucher aux fichiers des messages (/home/vpopmail/domains/* ), que ce soit Ă  la main ou avec un utilitaire comme qMailHandle, avant d'avoir arrĂȘtĂ© le service et tous les processus qmail
  • il ne faut JAMAIS tuer le processus qmail, au risque de perdre des messages et tout dĂ©zinguer. Il faut l'arrĂȘter avec /etc/init.d/qmail stop. La derniĂšre fois, il a fallu effacer tous les emails et tout rĂ©importer depuis la derniĂšre sauvegarde !
  • quand on arrĂȘte qmail, il est bon de faire un ps aux | grep mail pour contrĂŽler que tout soit bien arrĂȘtĂ©; si un message est en cours de traitement, les processus ne s'arrĂȘteront qu'une fois le traitement terminĂ© - ne pas essayer de travailler avant que tout soit arrĂȘtĂ©
  • quand on arrĂȘte qmail, il vaut mieux arrĂȘter courier-imap avant, et le relancer aprĂšs avoir relancĂ© qmail
  • quand on relance qmail, il est censĂ© dĂ©marrer deux processus /usr/bin/tcpserver : un "smtp" et un "pop"; environ une fois sur deux, le "pop" ne dĂ©marre pas. Il faut donc vĂ©rifier avec ps qu'il a bien dĂ©marrĂ©, sans quoi il faut arrĂȘter qmail tout de suite (avant qu'il se remette Ă  traiter des messages) et relancer qmail jusqu'Ă  ce que le serveur pop tourne
  • normalement il n'y a pas besoin d'arrĂȘter courier-imap pour toucher Ă  qmail, mais on ne sait jamais : on peut le stopper en mĂȘme temps que qmail : /etc/init.d/courier-imap stop et le redĂ©marrer en dernier : /etc/init.d/courier-imap start
  • par contre, recharger la config avec qmailctl reload ça ne semble pas poser de soucis

Modifier la config de qmail

Voir le détails des fichiers de config : http://www.lifewithqmail.org/lwq.html#config-files
Sur le serveur faut chercher dans /etc/qmail (ou /var/qmail/control)

Suite à une avalanche de refus de mails de la part de Orange et Wanadoo, réduction (de 12 à 3) du nombre d'opérations simultanées :
echo 3 > /var/qmail/control/concurrencyremote

Source : https://www.zapoyok.info/2011/01/01/orangewanadoo-et-%C2%AB-too-many-connections-slow-down-ofr004_104-104-%C2%BB/

Rechercher et lire des messages

Rechercher des messages dans la file d'attente

qmail-qread | grep -B1 adresse-ou-domaine-a-rechercher

Lire le contenu d'un message de la file

Utiliser qmlHandle en lui passant le numéro de l'email, qui se situe à la suite du # dans les résultats de qmail-qread.
cd /root/qmhandle-1.3.2
./qmHandle -m586800


Lire les logs

Pour lire les logs :
(Notez bien le F majuscule, qui fait un suivi par nom de fichier et permet de continuer de lire mĂȘme en cas de rotation du fichier)
tail -F /var/log/qmail/smtpd/current | tai64nlocal
tail -F /var/log/qmail/current | tai64nlocal


"Rajeunir" un message qui traĂźne dans la file d'attente

Cela permet de redemander Ă  QMail de le traiter assez rapidement.
  • trouver l'identifiant du message (avec qmail-qread par exemple), mettons qu'on obtienne #119123
  • trouver le fichier info dans les dossiers QMail :
$ find /var/qmail/queue/info -name 1191123

  • faire un touch sur le fichier info associĂ© :
$ touch /var/qmail/queue/info/22/1191123


Erreur : file permission error dans Qmailadmin

Si Qmailadmin affiche sur l'interface des messages du style :
file permission error .qmail-bota-languedoc-discard-default
file permission error .qmail-cst-donnees-reject-default
file permission error .qmail-cst-donnees-confirm-default

Cela signifie que le liens en questions (ici .qmail-bota-languedoc-discard-default, .qmail-cst-donnees-reject-default, ...) pointe surement vers fichiers qui n'existe plus.
Il suffit de supprimer ces liens pour résoudre le problÚme : rm .qmail-bota-languedoc-discard-default

Ajouter un favicon Ă   QmailAdmin

(voilĂ  un truc dont on n'a vraiment rien Ă  foutre)
  • Éditer le fichier suivant : vi /usr/local/share/qmailadmin/html/header.html
    • Ajouter une ligne : <link rel="shortcut icon" href="/images/qmailadmin/favicon.ico" />
  • Ajouter un fichier image "favicon.ico" dans le dossier : /home/admin/images/qmailadmin/
  • Recharger la page et c'est bon...

Erreur : 553 sorry, this recipient is not in my validrcptto list (#5.7.1)

Lors d'un envoi Ă  une redirection il peut subvenir ce message de bounce :
553 sorry, this recipient is not in my validrcptto list (#5.7.1)
Il faut aller voir vérifier sur le serveur mail quelles erreurs sont données par la commande
/usr/local/bin/update.validrcptto

Moi j'avais genre des ERROR: aphyllanthe.tela-botanica.net is listed in rcpthosts/morercpthosts.cdb but is not handled by the server.
Il a ensuite fallu ajouter chaque domaine en erreur au fichier /var/qmail/control/virtualdomains en respectant la forme domaine:domaine .
Ensuite Internet m'a dit d'envoyer un SIGHUP au process qmail-send (ça permet de rafraichir virtualdomain) : kill -1 PID aprÚs un ps aux | grep qmail-send
Pour conclure relancer validrcptto a fonctionné sans erreur et la redirection aussi.
Source : https://cr.yp.to/qmail/faq/admin.html#newdomains