User Tools

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
email:mailscanner [2025/06/16 08:21] willyemail:mailscanner [2026/04/13 14:52] (current) – [Web interface] willy
Line 1: Line 1:
-====== N) Mail Scanner ======+====== N) Spam filtering ======
  
-[[https://www.mailscanner.info|MailScanner]] is a tool that integrates your mail server (MTA = Postfix) with antivirus scanners and Spam Assassin.+[[https://github.com/rspamd/rspamd|RSpamD]] is an advanced spam filtering system and email processing framework that allows evaluation of messages by number of rules including regular expressions, statistical analysis and custom services such as URL black lists. Each message is analysed by Rspamd and given a verdict that might be used by MTA for further processing (e.g. to reject a message, or add a special header indicating spamalong with other information, such as possible DKIM signature or modifications suggested for a message.
  
  
-Download generic 'Nix tarball from [[https://github.com/MailScanner/v5/releases|GitHub]] releases page+===== Installation =====
  
-decompress and run install.sh+My VPS is pretty ancient and the CPU does not support sse4_2, instructions, so i had to disable **hyperscan** use flag by writing the following **/etc/portage/package.use/rspamd** file: 
 +<file - rspamd> 
 +mail-filter/rspamd  -hyperscan 
 +</file> 
 + 
 +Now simply emerge it:
 <code bash> <code bash>
-mkdir /opt/mailscanner +emerge -vp rspamd dev-db/redis
-cd /opt/mailscanner +
-wget ... +
-tar xvf <downloaded file> +
-cd MailScanner-xxx +
-./install.sh+
 </code> </code>
 +
 +rspamd requires redis, but somehow it doesn't pull it directly.
 +
 +
 +===== Configure rspamd =====
 +
 +Create **/etc/rspamd/local.d/actions.conf**:
 +<file - actions.conf>
 +# Basic action thresholds
 +reject = 15;        # Reject obvious spam
 +add_header = 6;     # Add spam headers
 +greylist = 4;       # Temporary delay suspicious mail
 +</file>
 +
 +Configure redis **/etc/rspamd/local.d/redis.conf**:
 +<file redis.conf>
 +# Redis connection for statistics and caching
 +servers = "127.0.0.1:6379";
 +</file>
 +
 +Setup a controller password for the web interface:
 +<code bash>
 +rspamadm pw
 +</code>
 +
 +Create **/etc/rspamd/local.d/worker-controller.inc**:
 +<file - worker-controller.inc>
 +# Replace with your generated password
 +password = "$2$your_generated_password_here";
 +</file>
 +
 +
 +===== Configure redis =====
 +
 +Setup redis at least in a basic and secure way **/etc/redis/redis.conf**:
 +<file - redis.conf>
 +# Bind only to localhost for security
 +bind 127.0.0.1 ::1
 +# Set memory limit
 +maxmemory 500mb
 +maxmemory-policy volatile-ttl
 +</file>
 +
 +
 +===== Configure postfix link =====
 +
 +Add milter integration to your Postfix configuration in **/etc/postfix/main.cf**:
 +<code>
 +# Enable Rspamd milter
 +smtpd_milters = inet:localhost:11332
 +milter_default_action = accept
 +milter_protocol = 6
 +</code>
 +
 +Configure Rspamd proxy worker in **/etc/rspamd/local.d/worker-proxy.inc**:
 +<file - worker-proxy.inc>
 +# Enable milter mode for Postfix integration
 +milter = yes;
 +timeout = 120s;
 +upstream "local" {
 +  default = yes;
 +  self_scan = yes;  # Scan messages directly
 +}
 +</file>
 +
 +
 +===== Startup =====
 +
 +Ensure all the services are running and setup to start on boot:
 +<code bash>
 +for i in rspamd redis postfix
 +do
 + rc-update add $i default
 + /etc/init.d/$i restart
 +done
 +</code>
 +
 +
 +===== Web interface =====
 +
 +By default rspamd web interface is exposed on **http://127.0.0.1:11334/** but of course, you must slap NGINX in front of it. I choose to expose it as **https://mail.mydomain.com/rspamd/** so add the following to your NGINX setup for **mail.mydomain.com**:
 +<code>
 +        location /rspamd/ {
 +                proxy_pass http://127.0.0.1:11334/;
 +                proxy_redirect    default;
 +                proxy_set_header  Host $host;
 +                proxy_set_header  X-Real-IP $remote_addr;
 +                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
 +                proxy_set_header  X-Forwarded-Host $server_name;
 +                proxy_set_header  X-Forwarded-Proto $scheme;
 +        }
 +</code>
 +
 +