View source for rspamd

{{anchor href="top"}}

Hits :  **{{hits}}**
Last Edit: 06.09.2017 01.20

=== Rspamd ===

a mini tutorial on **((https://rspamd.com Rspamd))**



{{ToC from="h2" to="h3"}}



==== Installation ====

%%

#  mkdir -pv rspamd
#  cd !$
#  wget -c https://rspamd.com/rpm-stable/centos-6/x86_64/rspamd-1.6.3-1.x86_64.rpm
#  wget -c https://rspamd.com/rpm-stable/centos-6/x86_64/gmime-2.6.20-5.el6.x86_64.rpm
#  yum -y install *


%%

((#top))
-----------

==== Init File ====

%%

# vim /etc/init.d/rspamd 

# ebal, Wed, 06 Sep 2017 00:31:37 +0300
## RSPAMD_CONF_FILE="/etc/rspamd/rspamd.sysvinit.conf"
RSPAMD_CONF_FILE="/etc/rspamd/rspamd.conf"

%%

or 

%%
# ln -s /etc/rspamd/rspamd.conf /etc/rspamd/rspamd.sysvinit.conf
%%


((#top))
-----------


==== Start  ====


%%

# /etc/init.d/rspamd restart
syntax OK
Stopping rspamd:                                           [FAILED]
Starting rspamd:                                           [  OK  ]

%%

https://balaskas.gr/blog/fp-content/images/rspamd_milter_direct.png


((#top))
-----------


==== Postfix  ====

**milter**

%%

 # ebal, Wed, 06 Sep 2017 00:51:42 +0300
 
 ## opendkim : 8891
 ## opendmarc: 8893
 ## 
 
 ## A list of Milter (mail filter) applications for new mail that does not arrive via the Postfix smtpd(8) server.
 non_smtpd_milters=inet:127.0.0.1:8891,inet:127.0.0.1:8893,inet:127.0.0.1:11332
 ## A list of Milter (mail filter) applications for new mail that arrives via the Postfix smtpd(8) server. 
 smtpd_milters=inet:127.0.0.1:8891,inet:127.0.0.1:8893, inet:127.0.0.1:11332
 
 # https://rspamd.com/doc/integration.html
 milter_protocol = 6
 milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}
 # skip mail without checks if something goes wrong
 milter_default_action = accept
 

%%

((#top))
-----------


==== Training  ====

Training the Bayesian classifier

%%

# cd /storage/vmails/balaskas.gr/evaggelos/.Spam/cur/ 
# find . -type f -exec rspamc learn_spam {} \; 

%%

==== Auto Training ==== 

via **cron** example:

%%

@daily /bin/find /storage/vmails/balaskas.gr/evaggelos/.Spam/cur/ -type f -mtime -1 -exec rspamc learn_spam {} \;

%%
((#top))
-----------


==== Stats ====

%%

# rspamc stat
Results for command: stat (0.012 seconds)
Messages scanned: 1
Messages with action reject: 0, 0.00%
Messages with action soft reject: 0, 0.00%
Messages with action rewrite subject: 0, 0.00%
Messages with action add header: 0, 0.00%
Messages with action greylist: 0, 0.00%
Messages with action no action: 1, 100.00%
Messages treated as spam: 0, 0.00%
Messages treated as ham: 1, 100.00%
Messages learned: 1948
Connections count: 1
Control connections count: 2220
Pools allocated: 2247
Pools freed: 2228
Bytes allocated: 542k
Memory chunks allocated: 41
Shared chunks allocated: 10
Chunks freed: 0
Oversized chunks: 763
Fuzzy hashes in storage "rspamd.com": 655428587
Fuzzy hashes stored: 655428587
Statfile: BAYES_SPAM type: sqlite3; length: 33.74M; free blocks: 0; total blocks: 444.74k; free: 0.00%; learned: 1948; users: 1; languages: 4
Statfile: BAYES_HAM type: sqlite3; length: 9.22k; free blocks: 0; total blocks: 0; free: 0.00%; learned: 0; users: 1; languages: 1
Total learns: 1948

%%

((#top))
-----------


==== X-Spamd-Result ====

Add extended reporting headers:

%%
# vim /etc/rspamd/modules.d/milter_headers.conf


 19 
 20 # ebal, Wed, 06 Sep 2017 01:52:08 +0300
 21 extended_spam_headers = true;
 22 
 23   use = [];

%%

%%
# /etc/init.d/rspamd restart
%%

View Source:

%%
X-Rspamd-Queue-Id: C024F2675E
X-Rspamd-Server: kvm
X-Spamd-Result: default: False [2.90 / 15.00]
%%


((#top))
-----------


==== Web Server ====

replace "SERVER_IP" with your server ip !!



%%
#  vim rspamd.conf

  worker {
  # ebal, Wed, 06 Sep 2017 01:21:27 +0300
  #    bind_socket = "localhost:11334";
      bind_socket = "SERVER_IP:11334";

%%

==== Web Server Login ====


**vim /etc/rspamd/worker-controller.inc**

%%

  1 # Included from top-level .conf file
  2 
  3 type = "controller";
  4 count = 1;
  5 # ebal, Wed, 06 Sep 2017 01:35:07 +0300
  6 #password = "q1";
  7 password = "password";
  8 # ebal, Wed, 06 Sep 2017 01:34:51 +0300
  9 # secure_ip = "127.0.0.1";
 10 secure_ip = "SERVER_IP";
 11 secure_ip = "::1";
 12 static_dir = "${WWWDIR}";

%%


https://balaskas.gr/blog/fp-content/images/rspamd_worker.png


((#top))
-----------


==== Enable Service ====

%%
# chkconfig --list | egrep -i rspamd
rspamd         	0:off	1:off	2:off	3:off	4:off	5:off	6:off


# chkconfig rspamd on

# chkconfig --list | egrep -i rspamd
rspamd         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

%%


((#top))
-----------



==== Reverse Proxy ====

apache:  **httpd-2.2**

%%

ProxyPreserveHost On

<Location /rspamd>
    AuthName "Rspamd Access"
    AuthType Basic
    AuthUserFile /etc/httpd/rspamd_passwd
    Require valid-user

    ProxyPass http://127.0.0.1:11334 
    ProxyPassReverse http://127.0.0.1:11334 

    Order allow,deny
    Allow from all 

</Location>

%%


==== selinux ====

%%
# setsebool -P httpd_can_network_connect=1
%%

or

%%

# setsebool httpd_can_network_connect_db on

%%

((#top))
-----------


==== IO write error ====

need to define host explicit !

%%

rspamc -h 127.0.0.1:11334 learn_spam msg3856

%%


((#top))
-----------

==== wrapper ====


%% 

# cat /usr/local/bin/rspamc



#!/bin/sh
/usr/bin/rspamc -h 127.0.0.1:11334 $*

%%