Plus de BALs...

Pour la beauté du geste, et aussi pour constater que ce n'est pas forcément bien pratique, nous allons créer un compte de messagerie pour un utilisateur lambda.

Il faut un compte Unix, mais cet utilisateur lambda n'a pas besoin de shell, il ne doit pas pouvoir lancer de commandes sur cyrus. Il doit juste disposer d'un répertoire dans lequel Postfix déposera la structure Maildir et les messages entrants et dans lequel Dovecot ira récupérer ces messages pour les présenter au client.

Création du compte

adduser --shell /bin/false lambda
...

Nous avons bien au bout du compte dans /etc/passwd :

lambda:x:1002:1002:,,,:/home/lambda:/bin/false

ainsi que le répertoire lambda créé dans /home.

Il n'y a plus qu'à essayer, avec un bon MUA (claws, par exemple), d'envoyer un message à lambda :

Et dans les logs :

Jun  3 16:41:11 cyrus postfix/smtpd[20702]: connect from unknown[192.168.10.47]
Jun  3 16:41:11 cyrus postfix/smtpd[20702]: 8FB3567D9D: client=unknown[192.168.10.47]
Jun  3 16:41:11 cyrus postfix/cleanup[20707]: 8FB3567D9D: message-id=<48455808.5070500@nain-t.net>
Jun  3 16:41:11 cyrus postfix/qmgr[20273]: 8FB3567D9D: from=<prof@nain-t.net>, size=529, nrcpt=1 (queue active)
Jun  3 16:41:11 cyrus postfix/smtpd[20702]: disconnect from unknown[192.168.10.47]
Jun  3 16:41:11 cyrus postfix/local[20708]: 8FB3567D9D: to=<lambda@cyrus.nain-t.net>, relay=local, delay=0.05, delays=0.03/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)

C'est passé dirait-on. Vérifions après avoir créé un compte pour lambda dans notre oiseau :

Notez que nous avons dû utiliser l'adresse lambda@cyrus.nain-t.net pour que ça fonctionne. Si nous avions utilisé lambda@nain-t.net, Postfix aurait mal réagi :

** Erreur pendant la session SMTP
*** Une erreur est survenue pendant l'envoi du message :
550 5.1.1 <lambda@nain-t.net>: Recipient address rejected: nain-t.net

Dans les logs de postfix:

Jun  3 16:50:40 cyrus postfix/smtpd[20716]: connect from unknown[192.168.10.47]
Jun  3 16:50:40 cyrus postfix/smtpd[20716]: NOQUEUE: reject: RCPT from unknown[192.168.10.47]: 554 5.7.1 <lambda@nain-t.net>: Relay access denied; from=<prof@nain-t.net> to=<lambda@nain-t.net> proto=ESMTP helo=<[192.168.10.47]>
Jun  3 16:51:09 cyrus postfix/smtpd[20716]: disconnect from unknown[192.168.10.47]

Tout simplement parce que notre postfix ne sait pas que tout le domaine nain-t.net fait partie de ses destinations :

mydestination = $myhostname, localhost

Modifions comme ceci :

mydestination = $mydomain, $myhostname, localhost

Et désormais, les adresses lambda@nain-t.net et prof@nain-t.net deviennent des destinations valides pour notre cyrus.