Exim

From YobiWiki
Jump to navigation Jump to search

Installation et configuration d'Exim sur Etch

apt-get install exim4-daemon-heavy
dpkg-reconfigure exim4-config
  • Yes, split => conf files are in /etc/exim4/conf.d
  • Or if you prefer, No, don't split => conf file is /etc/exim4/exim4.conf.template
  • Mail sent by smarthost; received via SMTP or fetchmail
  • Mail name: teuwen.org
  • List of IP-addresses to listen on: empty
  • List of domains as final destination: empty
  • Machines to relay mail for: 10.0.0.0/8:192.168.2.4%%%Note that if only the localhost must be able to use this smtp without authentication, it has still to be mentioned explicitely: '<ip>/32'
  • smarthost: courriel.latribu.com
  • Hide: no
  • Dial-on-Demand: no

Éditer /etc/exim4/passwd.client

courriel.latribu.com:philippe.teuwen@latribu.com:xxxxxx
update-exim4.conf => regenerate /var/lib/exim4/config.autogenerated

Attention!!! à partir d'une certaine version de exim4, le système refuse d'utiliser l'authentification s'il ny a pas d'encryption.
cf /usr/share/doc/exim4/README.Debian.gz: AUTH PLAIN and AUTH LOGIN are disabled for connections which are not protected by SSL/TLS per default. These authentication methods use cleartext passwords (like telnet).
If you need to enable them for unencrypted connections because your service provider does support neither TLS encryption nor the CRAM MD5 authentication method, you can do so by setting the appropriate macro as mentioned in the comments in the configuration file.

Le problème est résolu en créant un fichier /etc/exim4/exim4.conf.localmacros avec: AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS = true pour une configuration monolithique et en créant un fichier /etc/exim4/conf.d/main/000_localmacros avec le même contenu pour une configuration "split".

Incidemment une autre modification à apporter est le nom du SMTP server dans /etc/exim4/passwd.client
Symptome: l'envoi de mails hors du domaine de l'ISP (donc envoi qui requiert une authentification) échoue et on en trouve trace dans /var/log/exim4/mainlog

2005-XX-XX XX:XX:XX XXXXXX-XXXXXX-XX ** XX@XX.XX R=smarthost T=remote_smtp_smarthost:
SMTP error from remote mailer after RCPT TO:<XX@XX.XX>: host __courriel.talessa.com [85.234.192.2]__: 550 relay not permitted

Raison: le smarthost déclaré dans /etc/exim4/update-exim4.conf.conf est dc_smarthost='__courriel.latribu.com__' mais exim cherche la correspondance dans /etc/exim4/passwd.client avec courriel.talessa.com comme indiqué plus haut.
Pourquoi? la réponse est dans la résolution DNS du smarthost:

host courriel.latribu.com
courriel.latribu.com    CNAME   courriel.talessa.com
courriel.talessa.com    A       85.234.192.2

Solution: un bugreport existe: #244724 et #314327
En attendant, il faut faire référence à courriel.talessa.com dans /etc/exim4/passwd.client UPDATE Bizarrement bien que le bugreport ne soit pas fermé on dirait que le problème est réglé et il faut, avec les dernières versions d'Exim, indiquer le même smarthost dans passwd.client que dans update-exim4.conf.

SMTP server avec TLS et auth

apt-get install openssl

Générer les certificats avec par exemple:

/usr/share/doc/exim4-base/examples/exim-gencert

Activer le TLS en créant/ajoutant à /etc/exim4/exim4.conf.localmacros:
MAIN_TLS_ENABLE = true pour une configuration monolithique et en créant un fichier /etc/exim4/conf.d/main/000_localmacros avec le même contenu pour une configuration "split". Activer l'auth en se basant sur le daemon de courier-imap: décommenter dans la section AUTHENTIFICATION CONFIGURATION du fichier /etc/exim4/exim4.conf.template les sections
plain_courier_authdaemon et login_courier_authdaemon pour une configuration monolithique et en faisant de même dans le fichier /etc/exim4/conf.d/auth/30_exim4-config_examples avec le même contenu pour une configuration "split". Autoriser exim4 à accéder au socket de courier-imap (/var/run/courier/authdaemon/socket):

adduser Debian-exim daemon

Support d'adresses email secondaires

Je crée souvent des adresses sur mesure pour tous ces sites qui veulent un email: phil-parci, phil-parla...
Modifier dans /etc/exim4/exim4.conf.template (ou dans /etc/exim4/conf.d/router/900_exim4-config_local_user et 700_exim4-config_procmail selon, pour une configuration "split"), les routeur local_user (et routeur procmail, selon) en ajoutant avant check_local_user:

local_part_suffix = +* : -* : _*
local_part_suffix_optional

Si votre "user" favori n'est pas celui de votre account mais un alias défini dans /etc/aliases les adresses secondaires ne fonctionneront pas avec ce "user" favori.
Pour que cela fonctionne il faut aussi modifier le routeur system_aliases dans /etc/exim4/exim4.conf.template (ou dans /etc/exim4/conf.d/router/900_exim4-config_system_aliases pour une configuration "split") avant le data = ...lookup:

local_part_suffix = +* : -* : _*
local_part_suffix_optional

On peut aussi utiliser des adresses du type phil.xxx en ajoutant .* à la liste local_part_suffix:

local_part_suffix = +* : -* : _* : .*

Domaines virtuels

cf http://www.debian-administration.org/articles/140
Combiné à la règle précédente, cela signifie qu'il faut ajouter les lignes local_part_suffix... au routeur vdom_aliases, local_user et procmail ne nécessitent alors plus cette modification.

En résumé pour ajouter un compte:

  • adduser toto
  • userdb toto set uid=1234 gid=1234 home=/home/toto
  • userdbpw -hmac-md5 | userdb toto set hmac-md5pw
  • userdbpw -md5 | userdb toto set systempw
  • makeuserdb
  • ? /etc/init.d/courier-authdaemon reload
  • echo "toto : toto@localhost" >> /etc/exim4/virtual/mydomain.com

Qqs commandes utiles

  • Pour lister la queue de messages:
exim4 -bp

ou

mailq
  • Pour forcer le process de la queue de messages (par ex. car + de 10 messages ont été rapatriés en une fois):
exim4 -q

ou

runq
  • Pour "dégeler" (thaw) tous les messages gelés (frozen):
mailq|gawk '/frozen/{print $3}'|xargs exim4 -Mt;runq
  • Pour effacer un message de la queue:
exim4 -Mrm <ID du message>
  • Pour débugger un envoi:
echo test|./exim -d+all XX@XX.XX >/tmp/exim-log.txt 2>&1
  • Pour avoir les stats du jour:
eximstats /var/log/exim4/mainlog
  • Pour les recevoir par mail, cela est prévu dans /etc/cron.daily/exim4-base, il suffit de décommenter le code et ajouter son adresse email.