Exim
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.