Bonjour,
j'auto-héberge un serveur de mails sur un Raspberry Pi 4 composé de
Postfix, Dovecot, Mysql, Roundcube et Spamassassin.
Une extension de Roundcube permet aux utilisateurs de personnaliser les
règles de détection des courriers indésirables. Ces règles sont
enregistrées dans une base de données Mysql.
Tout fonctionnait bien jusqu'à ce que je découvre par hasard un
problème dans cette configuration : lorsqu'un e-mail est envoyé à un
seul utilsateur de mon serveur, ça fonctionne mais lorqu'il est envoyé
en même temps à deux utilisateurs ou plus, le message n'est pas
distribué dans les boîtes de réception respectives et est purement et
simplement supprimé.
Le problème vient de Spamassassin.
Configuration Postfix (
master.cf) :
smtp inet n - n - - smtpd -o
content_filter=spamassassin
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -u ${recipient} -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
Cette configuration fonctionne bien pour *un seul* destinataire mais
pour deux, voici les logs :
Oct 29 21:45:28 monserveur spamd[222215]: spamd: connection from ::1
[::1]:41668 to port 783, fd 5
Oct 29 21:45:28 monserveur spamd[222215]: spamd: processing message
<
xx...@free.fr> for utilisateur2@monserveur:5003
Oct 29 21:45:30 monserveur spamd[222215]: spamd: clean message
(-0.1/5.0) for utilisateur2@monserveur:5003 in 2.2 seconds, 6293 bytes.
Oct 29 21:45:30 monserveur spamd[222215]: spamd: result: . 0 -
DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE
scantime=2.2,size=6293,user=utilisateur2@monserveur,uid=5003,required_score=5.0,rhost=::1,raddr=::1,rport=41668,mid=<
xx...@free.fr>,autolearn=ham
autolearn_force=no
Oct 29 21:45:30 monserveur postfix/pipe[235769]: 14775202FA:
to=<utilisateur2@monserveur>, relay=spamassassin, delay=2.6,
delays=0.37/0.02/0/2.2, dsn=2.0.0, status=sent (delivered via
spamassassin service (X-Spam-Checker-Version: SpamAssassin 3.4.6
(2021-04-09) on monserveur X-Spam-Level: X-Spam-Status:))
Oct 29 21:45:30 monserveur postfix/pipe[235769]: 14775202FA:
to=<utilisateur1@monserveur>, relay=spamassassin, delay=2.6,
delays=0.37/0.02/0/2.2, dsn=2.0.0, status=sent (delivered via
spamassassin service (X-Spam-Checker-Version: SpamAssassin 3.4.6
(2021-04-09) on monserveur X-Spam-Level: X-Spam-Status:))
Oct 29 21:45:30 monserveur postfix/qmgr[217272]: 14775202FA: removed
Oct 29 21:45:30 monserveur spamd[222214]: prefork: child states: II
Et c'est tout. Spamassassin a testé utilisateur2 mais pas utilisateur1.
Si je supprime l'argument -u ${recipient} dans la config, voici ce que
ça donne :
Oct 31 12:26:43 monserveur spamd[338101]: spamd: connection from ::1
[::1]:43870 to port 783, fd 5
Oct 31 12:26:43 monserveur spamd[338101]: spamd: processing message
<
x...@free.fr> for spamd:5003
Oct 31 12:26:44 monserveur spamd[338101]: spamd: clean message
(-0.1/5.0) for spamd:5003 in 1.0 seconds, 3243 bytes.
Oct 31 12:26:44 monserveur spamd[338101]: spamd: result: . 0 -
DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED
scantime=1.0,size=3243,user=spamd,uid=5003,required_score=5.0,rhost=::1,raddr=::1,rport=43870,mid=<
e7927109-e60e-4f71...@free.fr>,autolearn=ham
autolearn_force=no
Oct 31 12:26:44 monserveur postfix/pickup[346408]: 23F8420217: uid=5002
from=<
x...@free.fr>
Oct 31 12:26:44 monserveur postfix/pipe[346429]: DD4AD20034:
to=<utilisateur3@monserveur>, relay=spamassassin, delay=1.5,
delays=0.43/0.02/0/1, dsn=2.0.0, status=sent (delivered via
spamassassin service)
Oct 31 12:26:44 monserveur postfix/pipe[346429]: DD4AD20034:
to=<utilisateur2@monserveur>, relay=spamassassin, delay=1.5,
delays=0.43/0.02/0/1, dsn=2.0.0, status=sent (delivered via
spamassassin service)
Oct 31 12:26:44 monserveur postfix/pipe[346429]: DD4AD20034:
to=<utilisateur1@monserveur>, relay=spamassassin, delay=1.5,
delays=0.43/0.02/0/1, dsn=2.0.0, status=sent (delivered via
spamassassin service)
Oct 31 12:26:44 monserveur postfix/qmgr[346409]: DD4AD20034: removed
...
Oct 31 12:26:44 monserveur spamd[338100]: prefork: child states: II
Oct 31 12:26:44 monserveur postfix/qmgr[346409]: 23F8420217:
from=<
x...@free.fr>, size=3835, nrcpt=3 (queue active)
Oct 31 12:26:44 monserveur dovecot: lmtp(346434): Connect from local
Oct 31 12:26:44 monserveur dovecot:
lmtp(utilisateur3@monserveur)<346434><X/a6GnTkQGVCSQUAboEwrg>: sieve:
msgid=<
x...@free.fr>: stored mail into mailbox 'INBOX'
Oct 31 12:26:44 monserveur dovecot:
lmtp(utilisateur2@monserveur)<346434><X/a6GnTkQGVCSQUAboEwrg:2>: sieve:
msgid=<
x...@free.fr>: stored mail into mailbox 'INBOX'
Oct 31 12:26:44 monserveur dovecot:
lmtp(utilisateur1@monserveur)<346434><X/a6GnTkQGVCSQUAboEwrg:3>: sieve:
msgid=<
x...@free.fr>: stored mail into mailbox 'INBOX'
Le message a bien été distribué dans chaque boîte de réception mais
Spamassassin a utilisé sa configuration par défaut et non les
paramètres personnalisés des utilisateurs.
Ma question est donc : comment paramétrer Postfix et Spamassassin pour
tester un e-mail envoyé à plusieurs destinataires en utilisant les
paramètres personnalisés de chacun et distribuer le message dans les
bonnes boîtes aux lettres ?
Merci de m'avoir lu ! lol
--
N'est pas mort ce qui à jamais dort...