plugin antispam sa-learn run program failed with exit code -1
Hello !
I've installed iRedMail on an Ubuntu Server 14.04.1
I'm not the only one on the iRedMail forum to have the problem, but the developpers of iRedMail doesn't found the problem and advice me to ask you directly.
When I want to move an email directly to /Junk/ this not works. In Thunderbird, the error is : "[SERVERBUG] failed to send mail" In RoundCube, the error is : "Server Error: UID MOVE: failed to send mail ."
But, if we firstly delete the email, then move the email from /Trash/ to /Junk/ this works.
Here is the package versions:
dovecot 2.2.9-1ubuntu2.1 dovecot-antispam 2.0+20130822-2build1 spamassassin 3.4.0-1ubuntu2.1
I have enabled antispam-debug in syslog, and the sa-learn seems to return an error:
Aug 20 20:21:13 mail imap: antispam: plugin initialising (2.0-notgit) Aug 20 20:21:13 mail imap: antispam: verbose debug enabled Aug 20 20:21:13 mail imap: antispam: "Junk" is exact match spam folder Aug 20 20:21:13 mail imap: antispam: no unsure folders Aug 20 20:21:13 mail imap: antispam: "Trash" is exact match trash folder Aug 20 20:21:13 mail imap: antispam: pipe backend spam argument = --spam Aug 20 20:21:13 mail imap: antispam: pipe backend not-spam argument = --ham Aug 20 20:21:13 mail imap: antispam: pipe backend program = /usr/bin/sa-learn Aug 20 20:21:13 mail imap: antispam: pipe backend program arg[0] = -D --username=guillaume.XXXX@nydomain.com Aug 20 20:21:13 mail imap: antispam: pipe backend tmpdir /tmp Aug 20 20:21:14 mail imap: antispam: mailbox_is_unsure(Junk): 0 Aug 20 20:21:14 mail imap: antispam: mailbox_is_trash(INBOX): 0 Aug 20 20:21:14 mail imap: antispam: mailbox_is_trash(Junk): 0 Aug 20 20:21:14 mail imap: antispam: mail copy: from trash: 0, to trash: 0 Aug 20 20:21:14 mail imap: antispam: mailbox_is_spam(INBOX): 0 Aug 20 20:21:14 mail imap: antispam: mailbox_is_spam(Junk): 1 Aug 20 20:21:14 mail imap: antispam: mailbox_is_unsure(INBOX): 0 Aug 20 20:21:14 mail imap: antispam: mail copy: src spam: 0, dst spam: 1, src unsure: 0 Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program /usr/bin/sa-learn Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program /usr/bin/sa-learn Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 1 -D --username=guillaume.XXXX@mydomain.com Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 2 --spam Aug 20 20:21:16 mail imap: antispam: run program failed with exit code -1
There is no other log in /var/log/dovecot.log or /var/log/mail.log
Here is my dovecot configuration:
# dovecot -n # 2.2.9: /etc/dovecot/dovecot.conf # OS: Linux 3.13.0-62-generic x86_64 Ubuntu 14.04.1 LTS auth_master_user_separator = * auth_mechanisms = PLAIN LOGIN dict { acl = mysql:/etc/dovecot/dovecot-share-folder.conf quotadict = mysql:/etc/dovecot/dovecot-used-quota.conf } first_valid_uid = 2000 last_valid_uid = 2000 listen = * [::] log_path = /var/log/dovecot.log mail_gid = 2000 mail_location = maildir:%Lh/Maildir/:INDEX=%Lh/Maildir/ mail_plugins = quota mailbox_alias acl mail_uid = 2000 managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave namespace { inbox = yes location = mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = no special_use = \Sent } mailbox Spam { auto = no special_use = \Junk } mailbox Trash { auto = subscribe special_use = \Trash } prefix = separator = / type = private } namespace { list = children location = maildir:%%Lh/Maildir/:INDEX=%%Lh/Maildir/Shared/%%u prefix = Shared/%%u/ separator = / subscriptions = yes type = shared } passdb { args = /etc/dovecot/dovecot-mysql.conf driver = sql } passdb { args = /etc/dovecot/dovecot-master-users driver = passwd-file master = yes } plugin { acl = vfile acl_shared_dict = proxy::acl antispam_backend = pipe antispam_debug_target = syslog antispam_pipe_program = /usr/bin/sa-learn antispam_pipe_program_args = --username=%Lu antispam_pipe_program_notspam_arg = --ham antispam_pipe_program_spam_arg = --spam antispam_spam = Junk antispam_trash = Trash antispam_verbose_debug = 1 auth_socket_path = /var/run/dovecot/auth-master mailbox_alias_new = Sent Messages mailbox_alias_new2 = Sent Items mailbox_alias_old = Sent mailbox_alias_old2 = Sent quota = dict:user::proxy::quotadict quota_rule = *:storage=1G quota_warning = storage=85%% quota-warning 85 %u quota_warning2 = storage=90%% quota-warning 90 %u quota_warning3 = storage=95%% quota-warning 95 %u sieve = %Lh/sieve/dovecot.sieve sieve_before = /var/vmail/sieve/dovecot.sieve sieve_dir = %Lh/sieve sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute sieve_filter_bin_dir = /usr/lib/dovecot/sieve-filter sieve_global_dir = /var/vmail/sieve sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.filter +vnd.dovecot.execute sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe sieve_plugins = sieve_extprograms } protocols = pop3 imap sieve lmtp service auth { unix_listener /var/spool/postfix/private/dovecot-auth { group = postfix mode = 0666 user = postfix } unix_listener auth-master { group = vmail mode = 0666 user = vmail } unix_listener auth-userdb { group = vmail mode = 0660 user = vmail } } service dict { unix_listener dict { group = vmail mode = 0660 user = vmail } } service imap-login { process_limit = 500 service_count = 1 } service lmtp { executable = lmtp -L inet_listener lmtp { address = 127.0.0.1 port = 24 } process_min_avail = 5 unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } user = vmail } service managesieve-login { inet_listener sieve { address = 127.0.0.1 port = 4190 } } service pop3-login { service_count = 1 } service quota-warning { executable = script /usr/local/bin/dovecot-quota-warning.sh unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } ssl = required ssl_cert =
I don't known if it's a problem related to dovecot or to spamassassin. If you could help me to solve the problem, this will be really appreciated :)
Regards
On 21/08/15 19:49, Guillaume Lakano - DOVECOT wrote:
Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 1 -D --username=guillaume.XXXX@mydomain.com Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 2 --spam
That looks like it should be three parameters, not two?
Also, read this:
http://wiki2.dovecot.org/Plugins/Antispam#Backend_-_mailtrain_realtime_sa-le...
Andrew
Le 21/08/2015 15:51, Andrew McN a écrit :
On 21/08/15 19:49, Guillaume Lakano - DOVECOT wrote:
Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 1 -D --username=guillaume.XXXX@mydomain.com Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 2 --spam That looks like it should be three parameters, not two?
Hello Andrew, thanks for your answer :)
Sorry about the previous copy/paste, this was a wrong previous test ( I've tested to inject others arguments to see if dovecot still report the error or no... )
Here is the the same logs :
Aug 21 16:04:37 mail imap: antispam: plugin initialising (2.0-notgit) Aug 21 16:04:37 mail imap: antispam: verbose debug enabled Aug 21 16:04:37 mail imap: antispam: "Junk" is exact match spam folder Aug 21 16:04:37 mail imap: antispam: no unsure folders Aug 21 16:04:37 mail imap: antispam: "Trash" is exact match trash folder Aug 21 16:04:37 mail imap: antispam: pipe backend spam argument = --spam Aug 21 16:04:37 mail imap: antispam: pipe backend not-spam argument = --ham Aug 21 16:04:37 mail imap: antispam: pipe backend program = /usr/bin/sa-learn Aug 21 16:04:37 mail imap: antispam: pipe backend program arg[0] = --username=guillaume.XXXX@mydomain.com Aug 21 16:04:37 mail imap: antispam: pipe backend tmpdir /tmp Aug 21 16:04:37 mail imap: antispam: mailbox_is_unsure(Junk): 0 Aug 21 16:04:37 mail imap: antispam: mailbox_is_trash(INBOX): 0 Aug 21 16:04:37 mail imap: antispam: mailbox_is_trash(Junk): 0 Aug 21 16:04:37 mail imap: antispam: mail copy: from trash: 0, to trash: 0 Aug 21 16:04:37 mail imap: antispam: mailbox_is_spam(INBOX): 0 Aug 21 16:04:37 mail imap: antispam: mailbox_is_spam(Junk): 1 Aug 21 16:04:37 mail imap: antispam: mailbox_is_unsure(INBOX): 0 Aug 21 16:04:37 mail imap: antispam: mail copy: src spam: 0, dst spam: 1, src unsure: 0 Aug 21 16:04:37 mail imap: antispam: running mailtrain backend program /usr/bin/sa-learn Aug 21 16:04:37 mail imap: antispam: running mailtrain backend program /usr/bin/sa-learn Aug 21 16:04:37 mail imap: antispam: running mailtrain backend program parameter 1 --username=guillaume.XXXX@mydomain.com Aug 21 16:04:37 mail imap: antispam: running mailtrain backend program parameter 2 --spam Aug 21 16:04:39 mail imap: antispam: run program failed with exit code -1 Aug 21 16:04:46 mail imap: antispam: plugin initialising (2.0-notgit) Aug 21 16:04:46 mail imap: antispam: verbose debug enabled Aug 21 16:04:46 mail imap: antispam: "Junk" is exact match spam folder Aug 21 16:04:46 mail imap: antispam: no unsure folders Aug 21 16:04:46 mail imap: antispam: "Trash" is exact match trash folder Aug 21 16:04:46 mail imap: antispam: pipe backend spam argument = --spam Aug 21 16:04:46 mail imap: antispam: pipe backend not-spam argument = --ham Aug 21 16:04:46 mail imap: antispam: pipe backend program = /usr/bin/sa-learn Aug 21 16:04:46 mail imap: antispam: pipe backend program arg[0] = --username=guillaume.XXXX@mydomain.com Aug 21 16:04:46 mail imap: antispam: pipe backend tmpdir /tmp Aug 21 16:04:46 mail imap: antispam: plugin initialising (2.0-notgit) Aug 21 16:04:46 mail imap: antispam: verbose debug enabled Aug 21 16:04:46 mail imap: antispam: "Junk" is exact match spam folder Aug 21 16:04:46 mail imap: antispam: no unsure folders Aug 21 16:04:46 mail imap: antispam: "Trash" is exact match trash folder Aug 21 16:04:46 mail imap: antispam: pipe backend spam argument = --spam Aug 21 16:04:46 mail imap: antispam: pipe backend not-spam argument = --ham Aug 21 16:04:46 mail imap: antispam: pipe backend program = /usr/bin/sa-learn Aug 21 16:04:46 mail imap: antispam: pipe backend program arg[0] = --username=guillaume.XXXX@mydomain.com Aug 21 16:04:46 mail imap: antispam: pipe backend tmpdir /tmp
Also, read this:
http://wiki2.dovecot.org/Plugins/Antispam#Backend_-_mailtrain_realtime_sa-le...
Ok I'll try to use an external pipe to script
Thanks
--
*NOX DIGITAL* Guillaume Lecanu
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Fri, 21 Aug 2015, Guillaume Lakano - DOVECOT wrote:
Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program /usr/bin/sa-learn Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program /usr/bin/sa-learn Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 1 -D --username=guillaume.XXXX@mydomain.com Aug 20 20:21:14 mail imap: antispam: running mailtrain backend program parameter 2 --spam Aug 20 20:21:16 mail imap: antispam: run program failed with exit code -1
- -1 usually means exec() failed, that is:
/usr/bin/sa-learn does not exist or the process thinks so at least.
Do you have SELinux active? http://wiki2.dovecot.org/WhyDoesItNotWork near the end.
If this does not help, add a wrapper script in your config and check if the script is called at least
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1
iQEVAwUBVdcz83z1H7kL/d9rAQKTywf/dhX5NOxUTjLQXIVAI+iOyyvLuncrG4q1 B3HMhGhRjAfGX5nvJnzSI+YFn/PTaZyrs1B8gjaNz4VyW54GcSqUiycG3NZGAv6x uLd1cjIY9UFVl2VB1uyUitVWmioNrsXzq07I5iKf9XT6h4B0XyIVCKHCWt7t9vCc HesPN+Eu6fFSRXNeP1u8Qded/iyAD4Qd/AodIBwcO1gSNgjMhrDF9phYJZHFudLZ HlMvC2SOPB3TDNUdYqdK2ZDS8v7zN6wsKrxEQorWGoqv1vRDRBczm7h+oTSmI0T9 sMo/lHtrWY19As4t9ghr3sBjpwHr+fcQnV3gAkk+x9qHCCKxjT68gw== =Hfaj -----END PGP SIGNATURE-----
Le 21/08/2015 16:21, Steffen Kaiser a écrit :
- -1 usually means exec() failed, that is:
/usr/bin/sa-learn does not exist or the process thinks so at least.
Hello Steffen, thanks for your reply.
I've tried to use an external script sa-learn-pipe.sh :
#!/bin/bash echo /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt echo "$$-start ($*)" >> /tmp/sa-learn-pipe.log echo $* > /tmp/sendmail-parms.txt cat<&0 >> /tmp/sendmail-msg-$$.txt /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt && rm -f /tmp/sendmail-msg-$$.txt & echo "$$-end" >> /tmp/sa-learn-pipe.log exit 0
And to update my configuration like that:
antispam_debug_target = syslog antispam_verbose_debug = 1
antispam_backend = pipe antispam_pipe_program_spam_arg = --spam antispam_pipe_program_notspam_arg = --ham antispam_pipe_program = /usr/local/bin/sa-learn-pipe.sh antispam_pipe_program_args = --username=%Lu
Now, this seems better, no error, the email is correctly moved in /Junk/ and I have no error
Aug 21 16:31:05 mail imap: antispam: mailbox_is_unsure(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_trash(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_trash(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mail copy: from trash: 0, to trash: 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_spam(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_spam(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_unsure(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mail copy: src spam: 0, dst spam: 0, src unsure: 0
BUT... the sa-learn-pipe.sh doesn't seems to be called ! No files created in /tmp/
:-(
I also tried to use the "mailtrain" backend but Dovecot doesn't accept it ( I suppose I need to set "antispam_backend" to "mailtrain" but this doesn't works ).
Do you have SELinux active? http://wiki2.dovecot.org/WhyDoesItNotWork near the end.
sestatus doesn't exists, package not installed ( policycoreutils ) and no file /var/log/audit*
So I suppose iRedMail doesn't install SELinux components.
If this does not help, add a wrapper script in your config and check if the script is called at least
It's not called at all :-/
Am 21.08.2015 um 16:37 schrieb Guillaume Lakano - DOVECOT:
Le 21/08/2015 16:21, Steffen Kaiser a écrit :
- -1 usually means exec() failed, that is:
/usr/bin/sa-learn does not exist or the process thinks so at least.
Hello Steffen, thanks for your reply.
I've tried to use an external script sa-learn-pipe.sh :
#!/bin/bash echo /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt echo "$$-start ($*)" >> /tmp/sa-learn-pipe.log echo $* > /tmp/sendmail-parms.txt cat<&0 >> /tmp/sendmail-msg-$$.txt /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt && rm -f /tmp/sendmail-msg-$$.txt & echo "$$-end" >> /tmp/sa-learn-pipe.log exit 0
And to update my configuration like that:
antispam_debug_target = syslog antispam_verbose_debug = 1
antispam_backend = pipe antispam_pipe_program_spam_arg = --spam antispam_pipe_program_notspam_arg = --ham antispam_pipe_program = /usr/local/bin/sa-learn-pipe.sh antispam_pipe_program_args = --username=%Lu
Now, this seems better, no error, the email is correctly moved in /Junk/ and I have no error
Aug 21 16:31:05 mail imap: antispam: mailbox_is_unsure(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_trash(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_trash(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mail copy: from trash: 0, to trash: 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_spam(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_spam(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_unsure(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mail copy: src spam: 0, dst spam: 0, src unsure: 0
BUT... the sa-learn-pipe.sh doesn't seems to be called ! No files created in /tmp/
:-(
I also tried to use the "mailtrain" backend but Dovecot doesn't accept it ( I suppose I need to set "antispam_backend" to "mailtrain" but this doesn't works ).
Do you have SELinux active? http://wiki2.dovecot.org/WhyDoesItNotWork near the end.
sestatus doesn't exists, package not installed ( policycoreutils ) and no file /var/log/audit*
So I suppose iRedMail doesn't install SELinux components.
If this does not help, add a wrapper script in your config and check if the script is called at least
It's not called at all :-/ imho you can call sa-learn directly, no pipe neccessary.
http://spamassassin.1065346.n5.nabble.com/Piping-to-sa-learn-td105920.html
cheers
juergen
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Fri, 21 Aug 2015, Guillaume Lakano - DOVECOT wrote:
Le 21/08/2015 16:21, Steffen Kaiser a écrit :
- -1 usually means exec() failed, that is:
/usr/bin/sa-learn does not exist or the process thinks so at least.
Hello Steffen, thanks for your reply.
I've tried to use an external script sa-learn-pipe.sh :
#!/bin/bash echo /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt echo "$$-start ($*)" >> /tmp/sa-learn-pipe.log echo $* > /tmp/sendmail-parms.txt cat<&0 >> /tmp/sendmail-msg-$$.txt /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt && rm -f /tmp/sendmail-msg-$$.txt & echo "$$-end" >> /tmp/sa-learn-pipe.log exit 0
Mayhap, start with something smaller:
========== /usr/local/bin/sa-learn-wrapper.sh #!/bin/bash
echo "$0 $@" >> /tmp/sa-learn-wrapper.log
exit 0 ========= END
chmod +x /usr/local/bin/sa-learn-wrapper.sh sudo -u "user" /usr/local/bin/sa-learn-wrapper.sh 1 2 3
And to update my configuration like that:
antispam_debug_target = syslog antispam_verbose_debug = 1
antispam_backend = pipe antispam_pipe_program_spam_arg = --spam antispam_pipe_program_notspam_arg = --ham antispam_pipe_program = /usr/local/bin/sa-learn-pipe.sh antispam_pipe_program_args = --username=%Lu
Now, this seems better, no error, the email is correctly moved in /Junk/ and I have no error
Aug 21 16:31:05 mail imap: antispam: mailbox_is_unsure(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_trash(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_trash(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mail copy: from trash: 0, to trash: 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_spam(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_spam(Junk): 0 Aug 21 16:31:05 mail imap: antispam: mailbox_is_unsure(INBOX): 0 Aug 21 16:31:05 mail imap: antispam: mail copy: src spam: 0, dst spam: 0, src unsure: 0
This means: your config does not trigger the script, because the Junk does not match any special folder. In your 1st message mailbox_is_spam(Junk) returned true (1)
BUT... the sa-learn-pipe.sh doesn't seems to be called ! No files created in /tmp/
you seem to have changed something else, too.
I also tried to use the "mailtrain" backend but Dovecot doesn't accept it ( I suppose I need to set "antispam_backend" to "mailtrain" but this doesn't works ).
there are two forks of the antispam plugin with incompatible settings.
Do you have SELinux active? http://wiki2.dovecot.org/WhyDoesItNotWork near the end.
sestatus doesn't exists, package not installed ( policycoreutils ) and no file /var/log/audit*
So I suppose iRedMail doesn't install SELinux components.
If this does not help, add a wrapper script in your config and check if the script is called at least
It's not called at all :-/
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1
iQEVAwUBVdsaynz1H7kL/d9rAQKb0Af7BCK4+GNVscOOEtuMDWgeiMyhM5mycFsv vk4qi6GR5UpOK0ClVDM2xYzuTTN7YOQchNOz9qr2XqdlN4tG7nrsGUA0nUEtYbT7 9X6W6RE1xlRCAM9fh1XSBb6Gho2vSsNFXxqM3eQ9Nv5YohR62bovjbnMbSrBcZ43 5i0La3zkWb491qS7ZdJBLTfPYz03XTA4GCcxU6CsR6hz66V3I6u5O1yTjw2Jpj7D iV+b7GuleFePccwBe5ms5Q9mY4JHec/niXlgUpI58jdVMPiMPmWjejormwBtnRJr UnNKHO3TiQVc7mtOSpHhDfD9BDCAJeTtAMARTy00IfQiYij3gto6kw== =K1/o -----END PGP SIGNATURE-----
participants (4)
-
Andrew McN
-
Guillaume Lakano - DOVECOT
-
J. Echter
-
Steffen Kaiser