Hello!
I did it:
---------------
begin routers
### DSPAM two routers for check and separating outgoing e-mails. ###
dspam_out_spamcheck_router:
driver = accept
domains = ! +local_domains
no_verify
condition = "${if and { {!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} }
{1}{0}}"
headers_add = "X-DSPAM-FILTER: by $primary_hostname on $tod_full"
transport = dspam_out_spamcheck
remote_delivery_dspam_router:
driver = accept
domains = ! +local_domains
condition = ${if match{$h_X-DSPAM-Result:}{Spam}}
transport = remote_dspam_transport
no_more
### And DSPAM routers ###
begin transports
dspam_out_spamcheck:
driver = pipe
### dspam@our_domain - from group
global:classification:*dspam@our_domain ###
command = /usr/bin/dspam --mode=notrain
--deliver=innocent,spam,summary -f '$sender_address' --user
dspam@our_domain -- $local_part@$domain
home_directory = "/var/lib/dspam"
current_directory = "/var/lib/dspam"
user = exim
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =
headers_remove = X-DSPAM-Result
remote_dspam_transport:
driver = appendfile
user = exim
group = mail
mode = 0660
mode_fail_narrower = false
envelope_to_add = true
return_path_add = true
directory = /var/mail/.Junk
maildir_format
--
best regards,
Pavlo.
27.03.13 12:53, DSPAM train написав(ла):
Hello!
There was the task to use dspam as processing outgoing mail that goes
out over RELAY (out-of-the-box).
We have run test incoming mail:
1. Dspam v3.10.2 + MySQL v5.5 + Exim 4.80.1
2. In classification trained dspam user "dspam@our_domain" in the
global group and run mode TOE:
Group is:
|global:classification:*dspam@our_domain|
The result of training:
|dspam_stats-H dspam@our_domain
dspam@our_domain:
TP True Positives: 359
TN True Negatives: 5652
FP False Positives: 6
FN False Negatives: 242
SC Spam Corpusfed: 0
NC Nonspam Corpusfed: 0
TL Training Left: 0
SHR Spam Hit Rate 59.73%
HSR Ham Strike Rate: 0.11%
PPV Positive predictive value: 98.36%
OCA Overall Accuracy: 96.04%|
3. Local users are in the dictionary "dspam@our_domain", before
forming his own dictionary.
4. Spam is saving in separated directories:
|local_delivery_dspam_transport:
driver = appendfile
group = mail
mode = 0660
mode_fail_narrower = false
envelope_to_add = true
return_path_add = true
directory = /var/mail/$domain/${local_part}/.Junk
maildir_format|
Everything would be okay, but what about the spam "out-of-the-box"
over RELAY.
There is a problem:
1. Before transport remote_smtp need to check email to spam, and if it
is found to temporarily store the selected directory, accessible only
to superuser root.
2. Should be used dictionary trained classification Users
"dspam@our_domain"
3. Do not need to record in the database dspam record the destination
email (out-of-the-box username)
What has been done:
1. Successfully tested using a mode without training "notrain",
records to tables dspam_signature_data and dspam_token_data doesn't
happens, and also spam goes to a separate directory:
|begin routers
dspam_out_spamcheck_router:
driver = accept
domains = ! +local_domains
no_verify
condition = "${if and { {!eq
{$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}}
} {1}{0}}"
headers_add = "X-DSPAM-FILTER: by $primary_hostname on
$tod_full"
transport = dspam_out_spamcheck
remote_delivery_dspam_router:
driver = accept
domains = ! +local_domains
condition = ${if match{$h_X-DSPAM-Result:}{Spam}}
transport = remote_delivery_dspam_transport
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more|
|begin transports
dspam_out_spamcheck:
driver = pipe
command = /usr/bin/dspam --mode=notrain
--deliver=spam,innocent,summary --user $local_part@$domain -f
'$sender_address' -- %u
home_directory = "/var/lib/dspam"
current_directory = "/var/lib/dspam"
user = exim
group = mail
log_output = true
return_fail_output = true
return_path_add = false
message_prefix =
message_suffix =
remote_delivery_dspam_transport:
driver = appendfile
group = mail
mode = 0660
mode_fail_narrower = false
envelope_to_add = true
return_path_add = true
directory = /var/mail/.Junk
maildir_format| 2. Vocabulary "dspam@our_domain" is used but the policy group always
provides training (no alternative invented). Suitably item "3" is not
executed because in the tables "dspam_virtual_uids/dspam_stats" has
been written "uid / username" (Table dspam_virtual_uids) and "TP True
Positives:" (Table dspam_stats). Eventually the tables was over fill up.
Statistics looks like:
|dspam_stats-H out.of.the....@gmail.com
out.of.the....@gmail.com:
TP True Positives: 12
TN True Negatives: 0
FP False Positives: 0
FN False Negatives: 0
SC Spam Corpusfed: 0
NC Nonspam Corpusfed: 0
TL Training Left: 2500
SHR Spam Hit Rate 100.00%
HSR Ham Strike Rate: 100.00%
PPV Positive predictive value: 100.00%
OCA Overall Accuracy: 100.00%|
Item "3" is important because as outbound traffic is large we don't
want to overload the database unnecessary transactions.
Option periodically delete records through the crontab does not offer.
Option groups combined global and merged, failed, because as we have a
lot of virtual local domains.
That's the problem, maybe someone also thinking about this, or decided
this alternative method, I would be grateful for any ideas.
Thank you.
--
best regards,
Pavlo
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Dspam-user mailing list
Dspam-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspam-user