Exim

From YobiWiki
Revision as of 21:43, 7 February 2016 by <bdi>PhilippeTeuwen</bdi> (talk | contribs) (→‎Nouveau compte)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Installation et configuration d'Exim sur Etch avec smarthost

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.

Installation et configuration d'Exim sur Etch

Pour écouter sur un port additionnel autre que le 25, ajouter à la configuration d'exim:

daemon_smtp_ports = 25 : 2525

Autre solution lue sur le Net, ça dépend sans doute de la version éditer /etc/default/exim4:

   # options for daemon listening on port 25 and port 2525
   SMTPLISTENEROPTIONS='-oX 2525:25'

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

Note qu'à partir d'un certain moment, le serveur SMTP denamdait à voir le certificate du client lorsque c'était possible et comme j'ai un certificat CACert dans Thunderbird, celui-ci me promptait à chaque fois que j'envoyais un mail, pour pas grand chose puisque certif ou pas la communication se faisait.
Explication: cf /etc/exim4/conf.d/main/03_exim4-config_tlsoptions
Pour éliminer cela j'ai donc ajouté à mon /etc/exim4/conf.d/main/000_localmacros

MAIN_TLS_TRY_VERIFY_HOSTS =

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/400_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.

Nouveau compte

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 # for courier-imap -> choose encrypted pwd in client config
  • userdbpw -md5 | userdb toto set systempw
  • makeuserdb
  • service courier-authdaemon reload
  • echo "toto : toto@localhost" >> /etc/exim4/virtual/mydomain.com
  • su - toto
    • maildirmake Maildir

Pour le récupérer via fetchmail:

~/.fetchmailrc :
poll imap.yobi.be with proto IMAP and with interval 5
      user 'toto' there with password 'xxx' is 'totolocal' here fetchall 
$ fetchmail -v

=> cela donne une erreur de vérification de certificat et le fingerprint, qu'on peut rajouter ainsi:

~/.fetchmailrc :
poll imap.yobi.be with proto IMAP and with interval 5
      user 'toto' there with password 'xxx' is 'totolocal' here fetchall sslfingerprint  "62:7B:89:58:7B:33:ED:FF:2B:CF:D9:43:CA:E1:32:0E"

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 forcer le process de la queue de messages, même pour les messages reschedulés pour plus tard (ex: greylisted):
exim4 -qf
  • 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.