I have spam reporting enabled. What I discovered is that
messages sent through this method are not actually being
submitted correctly. I also found through manual testing,
that the parameter '-C revoke' is not always successful. So I
changed the program line for spamc to use '-L spam' and '-L
forget' respectively. Here's how I tested.
In Horde and logged in as user1, find a message in Inbox to
route through the Spam reporting process. Select it and
choose Other Options->View Source. Copy all the source into a
new file named email.eml on the mail server system.
Log into the mail server system as user1.
Using spamc, manually report the email as spam to the system
to understand the intended behavior.
$ spamc -d localhost -L spam -s 1500000 -u user1 < email.eml
Responds with
Message successfully un/learned
Run the same command a second time.
$ spamc -d localhost -L spam -s 1500000 -u user1 < email.eml
Responds with
Message was already un/learned
Remove the email from spamassassin with
$ spamc -d localhost -L forget -s 1500000 -u user1 < email.eml
Responds with
Message successfully un/learned
Next, let's report the same email using Horde Spam Reporting
then manually test that it was learned.
In Horde, choose the same message from the Inbox and use the
Spam reporting method. Horde handles the spam reporting
correctly and the messsage is moved to an alternative folder
as intended. This works fine.
Let's return to the email server system and manually check
that the email was submitted correctly.
Rerun spamc with the email.eml file. This should respond with
a meesage that this was already learned.
$ spamc -d localhost -L spam -s 1500000 -u user1 < email.eml
Responds with
Message successfully un/learned
It does NOT! Instead this message has now been learned
manually. Horde did not report this correctly.
Here is my backends.local.php file for reference.
<?php
$servers['imap']['disabled'] = true;
$servers['advanced']['disabled'] = false;
$servers['advanced']['name'] = 'Advanced IMAP Server';
$servers['advanced']['hostspec'] = 'localhost';
$servers['advanced']['port'] = 143;
$servers['advanced']['maildomain'] = 'domain.net';
$servers['advanced']['spam']['innocent']['display'] = true;
$servers['advanced']['spam']['innocent']['program'] =
'/usr/bin/spamc -s 1500000 -d localhost -L forget -u %l';
$servers['advanced']['spam']['spam']['display'] = true;
$servers['advanced']['spam']['spam']['program'] =
'/usr/bin/spamc -s 1500000 -d localhost -L spam -u %l';
$servers['advanced']['special_mboxes']['IMP_Mailbox::MBOX_DRAFTS'] =
'Drafts';
$servers['advanced']['special_mboxes']['IMP_Mailbox::MBOX_SENT'] =
'Sent';
$servers['advanced']['special_mboxes']['IMP_Mailbox::MBOX_SPAM'] =
'Spam';
$servers['advanced']['special_mboxes']['IMP_Mailbox::MBOX_TEMPLATES']
= 'Templates';
$servers['advanced']['special_mboxes']['IMP_Mailbox::MBOX_TRASH'] =
'Trash';
$servers['advanced']['autocreate_special'] = true;
Looking at the apache status, it does show that spamc process
was kicked off, but it does not appear that any intended email
files are actually being submitted, unless this is just how
the log lines appear.
# /etc/init.d/apache2 status
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2)
Drop-In: /lib/systemd/system/apache2.service.d
└─forking.conf
Active: active (running) since Thu 2016-12-22 01:54:09 PST;
5 days ago
Process: 25714 ExecStop=/etc/init.d/apache2 stop
(code=exited, status=0/SUCCESS)
Process: 24796 ExecReload=/etc/init.d/apache2 reload
(code=exited, status=0/SUCCESS)
Process: 25739 ExecStart=/etc/init.d/apache2 start
(code=exited, status=0/SUCCESS)
CGroup: /system.slice/apache2.service
├─ 417 /usr/sbin/apache2 -k start
├─ 431 /usr/sbin/apache2 -k start
├─ 432 /usr/sbin/apache2 -k start
├─ 448 /usr/sbin/apache2 -k start
├─ 449 /usr/sbin/apache2 -k start
├─ 452 /usr/sbin/apache2 -k start
├─ 454 /usr/sbin/apache2 -k start
├─25018 /usr/sbin/apache2 -k start
├─25753 /usr/sbin/apache2 -k start
├─25757 /usr/sbin/apache2 -k start
├─25758 /usr/sbin/apache2 -k start
├─25843 /usr/sbin/apache2 -k start
├─25846 /usr/sbin/apache2 -k start
├─25847 /usr/sbin/apache2 -k start
├─26512 /usr/sbin/apache2 -k start
├─27332 /usr/sbin/apache2 -k start
├─27334 /usr/sbin/apache2 -k start
├─27403 sh -c /usr/bin/spamc -s 1500000 -d
localhost -L spam -u 'user1'
├─27404 /usr/bin/spamc -s 1500000 -d localhost -L
spam -u user1
├─28056 /usr/sbin/apache2 -k start
├─31845 /usr/sbin/apache2 -k start
├─31987 /usr/sbin/apache2 -k start
└─32190 /usr/sbin/apache2 -k start