Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Spamassassin et utilisateurs virtuels

0 views
Skip to first unread message

Cthulhu

unread,
Nov 9, 2023, 10:19:59 AM11/9/23
to
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...

Christophe PEREZ

unread,
Nov 9, 2023, 12:56:58 PM11/9/23
to
Le Thu, 09 Nov 2023 16:19:55 +0100, Cthulhu a écrit :

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

Tu as cherché sur google ?

Le premier lien que j'ai trouvé en parle, et suggère de mettre
"spamassassin_destination_recipient_limit = 1" dans le main.cf de postfix.

<https://serverfault.com/questions/1059434/emails-to-multiple-recipients-
on-same-server-not-getting-delivered>

Christophe PEREZ

unread,
Nov 9, 2023, 12:59:51 PM11/9/23
to
Le Thu, 9 Nov 2023 17:56:57 -0000 (UTC), Christophe PEREZ a écrit :

> Tu as cherché sur google ?

Notice "-u ${recipient}" added. Otherwise "username" field in database will
always appear as user which postfix is invoking spamc(in this example it is
'nobody'). Do not forget also to set
spamassassin_destination_recipient_limit = 1 in main.cf . spamc doesn't
expect to parse multiple recipients at once.

https://cwiki.apache.org/confluence/display/spamassassin/
IntegratedSpamdInPostfix

Cthulhu

unread,
Nov 9, 2023, 1:13:18 PM11/9/23
to
Le 09/11/2023, Christophe PEREZ a supposé :
> Le Thu, 9 Nov 2023 17:56:57 -0000 (UTC), Christophe PEREZ a écrit :
>
>> Tu as cherché sur google ?

Oui, longtemps !

> Notice "-u ${recipient}" added. Otherwise "username" field in database will
> always appear as user which postfix is invoking spamc(in this example it is
> 'nobody'). Do not forget also to set
> spamassassin_destination_recipient_limit = 1 in main.cf . spamc doesn't
> expect to parse multiple recipients at once.
>
> https://cwiki.apache.org/confluence/display/spamassassin/
> IntegratedSpamdInPostfix

J'ai vu les deux sites que tu cites et j'ai fait ce qui est écrit
ci-dessus mais ça n'a rien changé.
Et mon anglais étant ce qu'il est, je ne comprends pas s'il faut
indiquer ce paramètre pour traiter les destinataires 1 par 1 ou si ce
n'est tout simplement pas possible de traiter plusieurs destinataires
avec spamc.

Christophe PEREZ

unread,
Nov 9, 2023, 1:38:12 PM11/9/23
to
Le Thu, 09 Nov 2023 19:13:14 +0100, Cthulhu a écrit :

> je ne comprends pas s'il faut indiquer ce paramètre pour traiter les
> destinataires 1 par 1 ou si ce n'est tout simplement pas possible de
> traiter plusieurs destinataires avec spamc.

Justement, moi ce que j'en comprends c'est que comme spamc ne s'attend pas
à en traiter plusieurs à la fois, il faut mettre ce paramètre afin qu'il
les traite un par un.
Tu l'as mis dans ton postfix, rechargé postfix, et ça ne change rien à ton
2ème cas ?

Christophe PEREZ

unread,
Nov 9, 2023, 1:43:58 PM11/9/23
to
Le Thu, 9 Nov 2023 18:38:10 -0000 (UTC), Christophe PEREZ a écrit :

> Tu l'as mis dans ton postfix, rechargé postfix, et ça ne change rien à
> ton 2ème cas ?

Tout ce que je trouve sur le sujet référence systématiquement cette option.

spamassassin_destination_recipient_limit = 1 is required to make sure that
every recipient gets individually processed by spamassassin. This is
required due to the D flag above (Includes X-Original-To header). If you've
the D flag and you don't set spamassassin_destination_recipient_limit = 1
email with multiple destinations won't be delivered! If you don't care
about this header you can remove the flag and this isn't needed.

https://unix.stackexchange.com/questions/247433/postfix-spamassassin-
incoming-mail-headers-changes

Cthulhu

unread,
Nov 9, 2023, 4:02:30 PM11/9/23
to
Le 09/11/2023, Christophe PEREZ a supposé :
J'ai trouvé !

J'avais vu aussi ce forum où il remplace sendmail par dovecot. J'avais
essayé sans succès.

En re-vérifiant pour la énième fois les paramètres et les options, je
me suis aperçu d'une erreur dans
spamassassin_destination_recipient_limit = 1 (j'avais carrément oublié
_limit !).
Maintenant c'est tout bon.

Merci de m'avoir ouvert les yeux !

Christophe PEREZ

unread,
Nov 9, 2023, 6:02:02 PM11/9/23
to
Le Thu, 09 Nov 2023 22:02:27 +0100, Cthulhu a écrit :

> spamassassin_destination_recipient_limit = 1 (j'avais carrément oublié
> _limit !).
> Maintenant c'est tout bon.

Je me disais bien...

> Merci de m'avoir ouvert les yeux !

Je t'en prie.
0 new messages