SpamAssassinでの除去は、設定が大変で、精度がもう少し高かったらなー。
で、「RSPAMD」を!
確かに、postfix回り、その他のツール系も設定が楽になりました。
かつ、迷惑メールの判断も、それなりにいいですー。
- 関連記事 2021/06/18 更新
- Postfix 設定
- redis インストール
- RSPAMD インストール
- RSPAMD 設定
- WEBから閲覧 / 管理パスワード
- RSPAMD 設定 その他
- RSPAMD 設定ファイル
- SPAMD 起動
- WEB セッティング nginx
- WEB セッティング apache (httpd) (2020/08/03追記)
- DKIM モジュール
- アンチウィルスモジュール Clamav
- RSPSMDの挙動
- Postfix 連携
- Rspamd 2.0リリース(2019/10/28)
- Rspamd 2.2リリース(2019/11/23)
- Rspamd 2.5 リリース(2020/04/01)
- Rspamd 2.6 リリース(2020/12/11)
- Rspamd 2.7 リリース(2021/01/19)
- Rspamd 3.0 リリーズ(2021/10/04)
関連記事 2021/06/18 更新
↑ CentOS Stream8 版です。
Rspamdによる迷惑メールの排除実績 2021(2021/05/21)
Rspamdによる迷惑メール(Spam)減少効果(2020/08/08)
Postfix,Rspamd(迷惑メールツール)関係、メールサーバーまとめ(2020/02/22)
迷惑メール対策ツール、Rspamd。サブドメインで振り分け(2020/02/11)
迷惑メール対策ツール、Rspamd。ホワイトリスト、ブラックリスト(2020/01/19)
迷惑メール対策 Rspamd ホワイトリストの設定(2019/11/30)
迷惑メール対策、Rspamdのメール振り分け。Postfix,CentOS7(2019/08/26)
迷惑メールフィルタリングツール【Rspamd】 個別設定(詳細設定)(2019/08/17)
Rspamd、DMARCモジュール、SPFジュール、Postfix,CentOS7(2019/08/08)
Postfix 設定
Postfixの設定は、以下の設定まで行っておきます。
Postfix 3.4 ソースインストール CentOS7(マルチドメイン)
Postfix 3.4 [dovecot] CentOS7(マルチドメイン)
Postfix 3.4 [SSL 送受信] CentOS7(マルチドメイン)
redis インストール
NoSQL系のDB「redis」が必須になっています。
その他、DNSのキャッシュもあったほうがいいみたい。
DNSのキャッシュは、後回しにします・・・
# yum -y install epel-release # yum install -y redis # redis-server --version Redis server v=3.2.12 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=7897e7d0e13773f
↑redisがインストールされました。
# systemctl start redis.service # systemctl status redis.service ● redis.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/redis.service.d └─limit.conf Active: active (running) since XXX 2019-XX-XX 20:45:41 JST; Main PID: 2692 (redis-server) CGroup: /system.slice/redis.service └─2692 /usr/bin/redis-server 127.0.0.1:6379 XXX XX 20:45:41 X systemd[1]: Starting Redis persistent key-value database... XXX XX 20:45:41 X systemd[1]: Started Redis persistent key-value database. # systemctl enable redis.service
↑自動起動をさせます。
RSPAMD インストール
# yum install epel-release # curl https://rspamd.com/rpm-stable/centos-7/rspamd.repo > /etc/yum.repos.d/rspamd.repo # rpm --import https://rspamd.com/rpm-stable/gpg.key # yum install rspamd
RSPAMD 設定
# rspamadm configwizard ____ _ | _ \ ___ _ __ __ _ _ __ ___ __| | | |_) |/ __|| '_ \ / _` || '_ ` _ \ / _` | | _ < \__ \| |_) || (_| || | | | | || (_| | |_| \_\|___/| .__/ \__,_||_| |_| |_| \__,_| |_| Welcome to the configuration tool We use /etc/rspamd/rspamd.conf configuration file, writing results to /etc/rspamd Modules enabled: hfilter, phishing, mime_types, dkim_signing, asn, settings, regexp, arc, bayes_expiry, trie, rbl, ip_score, metadata_exporter, elastic, fuzzy_check, mid, multimap, chartable, surbl, dkim, maillist, once_received, emails, dmarc, forged_recipients, milter_headers, whitelist, force_actions, spf Modules disabled (explicitly): url_tags, url_reputation, spamtrap, dcc, mx_check, rspamd_update Modules disabled (unconfigured): spamassassin, clickhouse, metric_exporter, dynamic_conf, clustering, reputation, fuzzy_collect, external_services, antivirus, maps_stats Modules disabled (no Redis): greylist, url_redirector, replies, neural, ratelimit, history_redis Modules disabled (experimental): Modules disabled (failed): Do you wish to continue?[Y/n]: Setup WebUI and controller worker: Controller password is not set, do you want to set one?[Y/n]: N (★ここだけ、N。あとは、エンター) Redis servers are not set: The following modules will be enabled if you add Redis servers: * greylist * url_redirector * replies * neural * ratelimit * history_redis Do you wish to set Redis servers?[Y/n]: Input read only servers separated by `,` [default: localhost]: Input write only servers separated by `,` [default: localhost]: Do you have any password set for your Redis?[y/N]: Do you have any specific database for your Redis?[y/N]: Do you want to setup dkim signing feature?[y/N]: You have 1 sqlite classifiers Expire time for new tokens [100d]: Reset previous data?[y/N]: Do you wish to convert them to Redis?[Y/n]: cannot find /var/lib/rspamd/bayes.spam.sqlite and /var/lib/rspamd/bayes.ham.sqlite, skip conversion Converted classifier to the from sqlite to redis File: /etc/rspamd/local.d/classifier-bayes.conf, changes list: backend => redis new_schema => true expire => 8640000 File: /etc/rspamd/local.d/redis.conf, changes list: write_servers => localhost read_servers => localhost Apply changes?[Y/n]: Create file /etc/rspamd/local.d/classifier-bayes.conf Create file /etc/rspamd/local.d/redis.conf 2 changes applied, the wizard is finished now *** Please reload the Rspamd configuration ***
↑rspamadm configwizardを走らせます。一カ所だけ、「NO」。
WEBから閲覧 / 管理パスワード
「rspamadm pw」というコマンドを使って、パスワードを設定します。
2つ設定します。入力したパスワード(文字列)を書き留めておきます。
生成された文字列を、設定ファイルに登録します。
「閲覧用」と「管理用」の2つを設定します。
# rspamadm pw Enter passphrase: (閲覧用パスワードを入れる) (出力された英数字文字 閲覧用) # rspamadm pw Enter passphrase: (管理用パスワードを入れる) (出力された英数字文字 管理用)
vi /etc/rspamd/local.d/worker-controller.inc password = "(出力された英数字文字 閲覧用)"; enable_password = "(出力された英数字文字 管理用)";
↑worker-controller.incというファイルに保存をします。
RSPAMD 設定 その他
vi /etc/rspamd/local.d/redis.conf ---------------------------------- write_servers = "localhost"; read_servers = "localhost"; ↓ write_servers = "127.0.0.1:6379"; read_servers = "127.0.0.1:6379"; ----------------------------------
↑と変更をします。
rspamadm configwizard
設定時に登録してもいいのですが・・・(汗)
vi /etc/rspamd/local.d/milter_headers.conf use = ["spam-header", "x-spam-level", "x-spam-status", "x-virus", "authentication-results"]; skip_local = false; skip_authenticated = true; extended_spam_headers = true; routines { spam-header { header = "X-Spam-Flag"; remove = 1; value = "YES"; } x-spam-level { header = "X-Spam-Level"; remove = 1; char = "*"; } x-spam-status { header = "X-Spam-Status"; remove = 1; } x-virus { header = "X-Virus-Check"; remove = 1; symbols = ["CLAM_VIRUS"]; } authentication-results { header = "Authentication-Results"; remove = 1; add_smtp_user = false; spf_symbols { pass = "R_SPF_ALLOW"; fail = "R_SPF_FAIL"; softfail = "R_SPF_SOFTFAIL"; neutral = "R_SPF_NEUTRAL"; temperror = "R_SPF_DNSFAIL"; none = "R_SPF_NA"; permerror = "R_SPF_PERMFAIL"; } dkim_symbols { pass = "R_DKIM_ALLOW"; fail = "R_DKIM_REJECT"; temperror = "R_DKIM_TEMPFAIL"; none = "R_DKIM_NA"; permerror = "R_DKIM_PERMFAIL"; } dmarc_symbols { pass = "DMARC_POLICY_ALLOW"; permerror = "DMARC_BAD_POLICY"; temperror = "DMARC_DNSFAIL"; none = "DMARC_NA"; reject = "DMARC_POLICY_REJECT"; softfail = "DMARC_POLICY_SOFTFAIL"; quarantine = "DMARC_POLICY_QUARANTINE"; } } }
↑到着したメールのヘッダに「X-Spam-Level」などの情報を追加するための設定。
X-Spam-Status: No, score=-0.05 Authentication-Results: (ホスト名); dkim=none; dmarc=none; spf=pass
↑というような情報が記録されます。
RSPAMD 設定ファイル
設定ファイルを書く場合は、「/etc/rspamd/local.d/」以下に書きます。
「/etc/rspamd/」にデフォルトの設定がありますが、
「/etc/rspamd/local.d/」の設定があると、上書きされて、優先されます。
各種拡張モジュールが用意されていますが、
/etc/rspamd/local.d/elastic.conf
に
enabled = false;
という風に書くと、「設定しない」という事になります。明示的に、「false」としなくても、設定ファイルが無ければ、「false」となります。
上記は、「Elasticsearchモジュール」
SPAMD 起動
# systemctl start rspamd # systemctl enable rspamd
/var/log/rspamd/rspamd.log
にログが書かれますので、エラーなどがあれば、見てみます。
WEB セッティング nginx
webから見られるようにします。
nginx セッティング
server { listen 80; server_name (FQDN); access_log /var/log/rspamd_acc_log; error_log /var/log/rspamd_err_log; location / { root /usr/share/rspamd/www/; try_files $uri @proxy; } location @proxy { proxy_pass http://127.0.0.1:11334; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } }
↑基本設定です。
WEBにアクセスするとパスワードを求められますので、「管理用」もしくは、「閲覧用」のパスワードを入れます。
WEB セッティング apache (httpd) (2020/08/03追記)
<Location /rspamd> Order allow,deny Allow from all </Location> <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/rspamd$ /rspamd/ [R,L] RewriteRule ^/rspamd/(.*) http://localhost:11334/$1 [P,L] </IfModule>
↑ apacheの場合の設定です。
conf.d/userdir.conf
の最後のほうに記述します。
このファイルでなくても大丈夫です。
http://(サーバーのIP or FQDN):11334/
でもアクセスができますが、firewallなどにより、80もしくは、443(SSL)ポートでアクセスしたい場合、上記の設定が便利です。
RewriteEngine on
↑上記の記述は重要です。
これで、
http://(FQDN)/rspamd/
で、アクセスができます。
DKIM モジュール
送信時のDKIMモジュールを設定します。
Postfix 3.4 [迷惑メール対策 DKIM] CentOS7 (マルチドメイン)
と同じ感じです。
# yum install opendkim # mkdir /etc/opendkim/keys/(ドメイン) # opendkim-genkey -d (ドメイン) -s (セレクタ) -D /etc/opendkim/keys/(ドメイン)/ # chown -R opendkim.opendkim /etc/opendkim/keys/(ドメイン)/ # chmod a+r /etc/opendkim/keys/(ドメイン)/(セレクタ).*
↑ 2019/11/24 後半2行追加
# chmod 755 /etc/opendkim/keys/
↑ 2020/08/03 追記
vi /etc/rspamd/local.d/dkim_signing.conf --------------------------- domain { (ドメイン) { selector = "(セレクタ)"; path = "/etc/opendkim/keys/(ドメイン)/(セレクタ).private"; } } use_domain = "header";
↑rspamdとの連携設定です。
ドメインを複数設定する場合、「(ドメイン)」セクションを増やしていきます。(2020/08/26修正)
use_domain = “header”
のところは、複数ドメインになっても、1行です。(2020/08/03 追記)
# cat /etc/opendkim/keys/(ドメイン)/(セレクタ).txt (セレクタ)._domainkey IN TXT ・・・
上記のファイルをDNSに登録をします。
アンチウィルスモジュール Clamav
clamavと連携をして、ウィルスチェックを行います。
Clamav インストール
# yum install openssl openssl-devel libcurl-devel zlib-devel libpml-devel libxml2-devel json-c-devel bzip2-devel pcre2-devel ncurses-devel sendmail-devel
↑関連ソフトのインストール
# ./configure --sysconfdir=/etc # make -j2 # make install
Clamav 設定と起動
/etc/clamd.conf.sample /etc/freshclam.conf.sample
というファイルができますので、
それぞれ、
/etc/clamd.conf /etc/freshclam.conf
にコピーをします。
# mkdir /usr/local/share/clamav # mkdir /var/log/clamav/ # mkdir /var/run/clamd # chown _rspamd._rspamd /var/log/clamav/ # chown _rspamd._rspamd /usr/local/share/clamav # chown _rspamd._rspamd /var/run/clamd
↑RSPAMDで、実行しているユーザ「_rspamd」と同じユーザで起動をします。
そのため、周辺ファイルも、「_rspamd」に統一をします。
# vi /usr/lib/tmpfiles.d/clamav.conf d /var/run/clamd 0755 _rspamd _rspamd
↑「/var/run/clamd」が再起動後も消えないようにする
vi /etc/freshclam.conf --------------------------------------- Example ↓ #Example #DatabaseDirectory /var/lib/clamav ↓ DatabaseDirectory /usr/local/share/clamav #UpdateLogFile /var/log/freshclam.log ↓ UpdateLogFile /var/log/clamav/freshclam.log #LogFileMaxSize 2M ↓ LogFileMaxSize 2M #LogTime yes ↓ LogTime yes #PidFile /var/run/freshclam.pid ↓ PidFile /var/run/clamd/freshclam.pid #DatabaseOwner clamav ↓ DatabaseOwner _rspamd
# freshclam -d -u _rspamd
↑ウイルス定義ファイルをダウンロードします。
デーモン、かつ「_rspamd」ユーザとして起動をします
# tail /var/log/clamav/freshclam.log Sat XXX XX XX:01:07 2019 -> freshclam daemon 0.101.2 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64) Sat XXX XX XX:01:07 2019 -> ClamAV update process started at Sat XXX 3 XX:XX:07 XXXX Sat XXX XX XX:01:07 2019 -> main.cvd is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr) Sat XXX XX XX:01:45 2019 -> bytecode.cvd is up to date (version: 330, sigs: 94, f-level: 63, builder: neo) Sat XXX XX XX:01:48 2019 -> Database updated (6263732 signatures) from database.clamav.net (IP: XXX.XXX.XXX.XXX)
↑ウィルスパターンデータベースがアップデートされました。
vi /etc/clamd.conf ---------------------------------------------------------- Example ↓ #Example #LogFile /tmp/clamd.log ↓ LogFile /var/log/clamav/clamd.log #PidFile /var/run/clamd.pid ↓ PidFile /var/run/clamd.pid #DatabaseDirectory /var/lib/clamav ↓ DatabaseDirectory /usr/local/share/clamav #TCPSocket 3310 ↓ TCPSocket 3310 #TCPAddr 127.0.0.1 ↓ TCPAddr 127.0.0.1 #User clamav ↓ User _rspamd
# clamd
↑起動まで、少し時間がかかります。
# netstat -an |grep 3310 tcp 0 0 127.0.0.1:3310 0.0.0.0:* LIST
↑と、3310ポートがオープンとなります。
tail /var/log/clamav/clamd.log TCP: Bound to [127.0.0.1]:3310 TCP: Setting connection queue length to 20 LOCAL: Removing stale socket file /tmp/clamd.socket LOCAL: Unix socket file /tmp/clamd.socket LOCAL: Setting connection queue length to 20
↑ソケットも設定されています。
RSPAMDとの連携
vi /etc/rspamd/local.d/antivirus.conf clamav { action = "reject"; scan_mime_parts = true; scan_text_mime = true; scan_image_mime = true; message = '${SCANNER}: virus found: "${VIRUS}"'; symbol = "CLAM_VIRUS"; type = "clamav"; servers = "127.0.0.1:3310"; log_clean = true; patterns { JUST_EICAR = '^Eicar-Test-Signature$'; } whitelist = "/etc/rspamd/antivirus.wl"; }
↑「action = “reject”」
は、ウィルスが来たら、受信しないで、送信者に返すという設定。
「/etc/rspamd/antivirus.wl」
は、IPアドレスを記述する。
そのIPから来るメールは、チェックしない。
ウィルスチェックテスト
# wget http://www.eicar.org/download/eicar.com -O /tmp/eicar_sig.txt
↑というように、サンプルウイルスをダウンロードします。
/tmp/eicar_sig.txt
の中身は、1行。
この内容を本文のテキストに入れて、設定したpostfixに送付してみます。
I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out. (メールアドレス): XXX.XXX.XXX.XXX failed after I sent the message. Remote host said: 554 5.7.1 clamav: virus found: "Eicar-Test-Signature"
↑「virus found」というように返ってきます。
Clamav利用時のメモリ
VPSの2Gメモリでは、
ERROR: daemonize() failed: Cannot allocate memory
というようにエラーがでて、起動されません・・・
最低、3Gのメモリが必要かと思います。
メールの流通量、その他、アプリの事を考えると、それ以上必要かと思います。
RSPSMDの挙動
基本、スパム(迷惑メール)と判断されると、送信者に返信されます。
<送信先メールアドレス>: host (RSPAMD稼働中サーバー)said: 554 5.7.1 Spam message rejected (in reply to end of DATA command)
また、判断が微妙なものは、受信するというような設定もできます。
迷惑メールっぽいメールが、すり抜けるたり、迷惑メールとして、誤判断するときが、時折ありますが、SpamAssasinの初期より精度が高く、サーバ管理者は楽になります。
Postfix回り、回りのツール類の設定が楽です。
Postfix 連携
vi /etc/postfix/main.cf # rspamd smtpd_milters = inet:localhost:11332 milter_default_action = accept milter_protocol = 6
上記の設定でOK!
Rspamd 2.0リリース(2019/10/28)
yum updateでアップデートをしましたが、
問題なくアップデートされたようです・・・
1.9.4 -> 2.0へのアップでした。
今回で、CentOS6は、サポート外になり、CentOS8がパッケージ対象として
追加されたようです・・・
これから、様子を見ていこうと思います。
Rspamd 2.2リリース(2019/11/23)
Rspamd 2.2がリリースされました。
yum updateで、アップデートできました・・
# yum update rspamd ======================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================= Updating: rspamd x86_64 2.2-1 rspamd 5.3 M Transaction Summary ======================================================================================================================================= Upgrade 1 Package
「virustotal」というウィルスやマルウェアをチェックできるソフトで、これを利用できるようになったようです。
virustotalは、Google傘下にある会社。
今度、試してみたいと思います。
Rspamd 2.5 リリース(2020/04/01)
2.3と、2.4を飛ばして、2.5にアップデートしました。
アップデート内容を見ると、設定は変更しなくても大丈夫ようで・・・。
# yum update rspamd Downloading packages: rspamd-2.5-156.x86_64.rpm | 5.4 MB 00:00:19 Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : rspamd-2.5-156.x86_64 1/2 Cleanup : rspamd-2.2-1.x86_64 2/2 Verifying : rspamd-2.5-156.x86_64 1/2 Verifying : rspamd-2.2-1.x86_64 2/2
Rspamd 2.6 リリース(2020/12/11)
9月末にリリースされた、2.6。順調に稼働をしています。
chromeで、webにログインするときに、
↑上記のログインウィンドウが出てこない場合があります。
「ログインできないー!」「パスワードが入力できない!」とか、慌てずに「キャッシュ」をクリアにすれば、上記のログインウィンドウが出てきますので、ご安心下さい。
Rspamd 2.7 リリース(2021/01/19)
2021年1月にリリースされた、2.7。
2021-01-xx xx:xx:xx #4653(main) <602295>; main; main: rspamd 2.7 is starting, build id: release
このバージョンは、バグフィックスがメイン、ということで、アップデートしても悪さはしないでしょう。順調に稼働中です。
Rspamd 3.0 リリーズ(2021/10/04)
8月19日にリリースされた、Version 3.0。無事に稼働をしております。
map; http_map_error: error reading https://maps.rspamd.com/freemail/free.txt.zst(151.115.41.123:443): connection with http server terminated incorrectly: ssl connect error: ssl error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
↑ Version 3.0 とは、直接関係ないですが、10月1日より、Let’s Encryptの関係で、上記のエラーになったら・・・
で、アップデートしましょう。