ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2013:08:22:dovecot_et_lmtp

Dovecot et LMTP

Aprés avoir vu une migration rapide vers Dovecot , on va configurer Postfix pour qu'il laisse Dovecot livrer les e-mails dans les Maildir des utilisateurs.

~~READMORE~~

Pourquoi Dovecot ?

Si on laisse Postfix déposer lui-même les e-mails dans les Maildir alors certains apports de Dovecot fonctionneront mal, comme:

  • Sieve : un filtre de e-mail (un peu comme ProcMail, mais en plus simple)
  • Quota : gestion des quotas.

Par contre, on va y perdre Procmail (enfin, pas totalement).

Dovecot LDA

Dans la plupart des configurations proposés, c'est “dovecot-lda” qui est mis en avant.

Or, dans la doc il est dit que “dovecot-lmtp” est plus simple et plus performant.
"LMTP is easier to configure and gives better performance"

LMTP a pour but de livrer le mail dans les boites locales… alors on va l'utiliser.

Dovecot-LMTP

Installer le package

# aptitude install dovecot-lmtpd
...
Creating config file /etc/dovecot/conf.d/20-lmtp.conf with new version
...

A part les commentaires, le fichier est vide: parfait.

Le protocole “lmtp” est automatiquement activé grâce à ce fichier de configuration: /usr/share/dovecot/protocols.d/lmtpd.protocol

Configurer "dovecot-lmtp"

Dans local.conf , ajouter:

auth_username_format = %Ln

… afin que le domaine soit striped: http://www.0xf8.org/2012/11/trouble-with-postfix-and-dovecotpam-unknown-user/

Sinon, on aura un truc comme ça dans les logs:

Apr 12 08:20:28 mail postfix/lmtp[10624]: 2858C54C86: to=<XXX@mail.local.eez.fr>, orig_to=<XXX@tjaouen.fr>, relay=mail.eez.fr[private/dovecot-lmtp], delay=0.34, delays=0.24/0.01/0.05/0.04, dsn=5.1.1, status=bounced (host mail.eez.fr[private/dovecot-lmtp] said: 550 5.1.1 <XXX@mail.local.eez.fr> User doesn't exist: XXX@mail.local.eez.fr (in reply to RCPT TO command))

… et ajouter aussi:

protocol lmtp {
  postmaster_address = <EMAIL_POSTMASTER>@<DOMAIN>
  #mail_fsync = optimized
}

service lmtp {

  # ----------------------------------------------------
  # Configuration : Postfix => Dovecot-lmtp
  # ----------------------------------------------------
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    user = postfix
    group = postfix
    mode = 0660
  }
  # ----------------------------------------------------

  #process_min_avail = 5
}
# /etc/init.d/dovecot status

et si y a pas d'erreur:

# /etc/init.d/dovecot reload

On voit la socket lmtp apparaître dans l'environnement de Postfix :

# ls /var/spool/postfix/private/dovecot-lmtp -l
srw-rw---- 1 postfix postfix 0 avril  12 06:59 /var/spool/postfix/private/dovecot-lmtp

Dans ''Postfix''

Editer le fichier /etc/postfix/main.cf et ajoutant:

mailbox_transport = lmtp:unix:private/dovecot-lmtp
lmtp_destination_recipient_limit = 1
# postfix reload

Tester

Quand tout va bien, dans les Logs:

Aug 12 09:24:28 mail dovecot: lmtp(10676): Connect from local
Aug 12 09:24:29 mail dovecot: lmtp(10676, userXXX): iIj/M8z3FFK0KQAA7jAOhQ: msgid=<5214F7C1.5090208@gmail.com>: saved mail to INBOX
Aug 12 09:24:29 mail postfix/lmtp[10675]: 93C3654C86: to=<userXXX@mail.local.eez.fr>, orig_to=<userXXX@tjaouen.fr>, relay=mail.eez.fr[private/dovecot-lmtp], delay=0.41, delays=0.25/0.01/0.01/0.14, dsn=2.0.0, status=sent (250 2.0.0 <userXXX@mail.local.eez.fr> iIj/M8z3FFK0KQAA7jAOhQ Saved)
Aug 12 09:24:29 mail dovecot: lmtp(10676): Disconnect from local: Client quit (in reset)
Aug 12 09:24:29 mail postfix/qmgr[10600]: 93C3654C86: removed

Si par malheur Dovecot-lmtp est hors service, Postfix va faire son travail en gardant les messages en attente dans la “mailq”: donc, rien de dramatique si l'interruption est momentannée.

Bilan

A défaut d'autres choses, maitenant, les mails sont livrés a Dovecot via dovecot-lmtp .

Toutefois, ça marche parce que:

The precedence of local(8) delivery features from high to low is:
aliases, .forward files, mailbox_transport_maps, mailbox_transport, mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory, fallback_transport_maps, fallback_transport and luser_relay.

En conséquence: prendre garde au “.forward” (entre autres) dans les “HOME” :
Un “.forward” peut définir que la livraison sera faite par Postfix et ainsi, “by-passer” la livraison via dovecot-lmtp ; Cela peut être souhaitable si on veut utiliser Procmail !

blog/2013/08/22/dovecot_et_lmtp.txt · Dernière modification : 2013/09/08 19:35 de thierry