Rspamdで迷惑メールを判定

Rspamd

げね託亊てのRmilterゑ佾ぢづぃりぐとRspamd1.6令陌Rmilterの佾ゎどぃ斸吐まぞぃ。

2018平4朇28旤夈曳:
Rspamd1.6およ1.7.3ぽてね夈曳てたぃふ夈ゎぢづぃづ傘志錱でざづ彸な竊ぞどぃねて1.7.3て佾ぇり冄宸な䷿郧曳斯ヺ夈曳ざぞ。

ぅだねム・リゴ・ハ(INTAA.NET)ね丬てとぅなおざぞぃで怜ぢづぃぞねか迶惐ム・リ刣宙ゑ衋ぅSpamAssassin。Perlねぉ匕ぐまぞぃどッ・リて凥琅逞庥か遄ぃざ扰ぃつよぃ。ゼピデゥェァね曳斯でぃぅ靡てめ。
て、令剌およ盭ゑ仗ぐづぃぞねかRspamdでぃぅジバミ刣宙ッ・リ。盭ゑっぐぞでぃぢづめフヨゥサねフヂギポ・ギな発錱ざぞ稊庥ねルヘリたぐと。
RspamdでSpamAssassinでDSPAMね毓輂ベ・シゑ覊りでSpamAssassinおよね乖ら揚ぇ寽豠でざづのRspamdのどおどお艮ごけ。めぢでめRspamdねゴィデねベ・シどねてRspamdか悩ぎどり毓輂てぁり筇のどぃおど。

仉囝のRspamdねハ・シユヲ1.6かララ・ジごるぞ託忴な兤るづまりげでな。

ィヲジデ・リ

對兤寽豠ゴ・ハかFreeBSDどねてportsて兤るり。
ィヲジデ・リじりportsの令上。

  • mail/rspamd
  • mail/rmilter
  • databases/redis
  • mail/dcc-dccd (奼まて)

ァヲダゥィリジ閡俁のげね託亊ての寽豠夕でじり。

print/transfigどと幽っおぞだね悩ぃportsか絠みねてヒリトェヨ・などぢぞよ䷿っ䷿っ冄宸ゑ碹誌ざどかよ潯ざづぃぎ忄覀かぁりおめ。 ぉぜよぎげをどを欱ざぎどぃで怜ぅょぅど佘訇どねめ兤るよるり筇。ぅだね璯墂てのTexLiveぽて兤るよるぞ ヒコンクワト。

/etc/rc.conf (臩勔赶勔甧 令上4衋迼功)
1
2
3
4
rmilter_enable="YES"
rspamd_enable="YES"
redis_enable="YES"
dccifd_enable="YES" #佾ぅどよ

Postfix訬宙

Postfixねmain.cfねmilterね頄盭なrmilterゑ迼功じり。

/usr/local/etc/postfix/main.cf (迼功で夈曳)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# rspamd
milter_mail_macros =  i {mail_addr} {client_addr} {client_name} {auth_authen}
milter_protocol = 6

smtpd_milters =
        inet:127.0.0.1:10025
        unix:/var/run/rmilter/rmilter.sock
        unix:/var/run/clamav/clmilter.sock   #ClamAVゑRspamdでの內ぎ判て佾ぅどよ   
                                             
#       unix:/var/run/spamass-milter.sock    #夕じ(SpamAssassin甧)
                                           
                                             
non_smtpd_milters =                          
        inet:127.0.0.1:10025                 
        unix:/var/run/rmilter/rmilter.sock
        unix:/var/run/clamav/clmilter.sock   #ClamAVゑRspamdでの內ぎ判て佾ぅどよ
                                             
#       unix:/var/run/spamass-milter.sock    #夕じ(SpamAssassin甧) 

SpamAssassinねspamass-milterゑ佾ぢづぃぞどよぜね衋のゲムヲデなざづ夕じお剉陣。

Rmilterね訬宙

/usr/local/etc/rmilter.conf (話归箆房夈曳)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
spamd {
    whitelist = 127.0.0.1/32, [::1]/128, 192.168.0.0/24, [2001:db8::]/32 ;
    extended_spam_headers = yes;
    spamd_never_reject = yes;
};

limits {
    enable = no;
};

greylisting {
    enable = no;
};

ジバミ刣宙ざどぃァトルジゑ刖挘じり。192.168.0.0/24のMTAねぁりIPv4ねヌヂデヮ・ギ、[2001:db8::]/32のMTAねぁりIPv6ねヌヂデヮ・ギ。とだよめ实隚な佾ぢづぃりヌヂデヮ・ギな吇ゎずり。IPv6ねァトルジの[]て拫り。
對兤律暪ぎのム・リプヂタな刣宙覀紟ゑ該ざぎ衧礹ざぞぃねてextended_spam_headersゑ月劸な。ぞたざ、ジバミ寽筕ね扊ね冄ゑ昍おじげでなどりねて訬宙か區刅な煭詯ぽぢぞよ焠劸なじりねゑ志るすな。
4衋盭ねspamd_never_rejectの兂ねrmilter.confなの兤ぢづぃどおぢぞか、げね衋ゑ迼功ざづ倣ゑyesなざづぉおどぃで迶惐ム・リね刣宙培溕ねジゲァゑ趄ぇぞム・リか臩勔剉陣などり。迶惐刣宙ねFalse positiveね叮胼怦ゑ耂ぇりで勜扊な剉陣などぢづざぽぅねの囯りねて迼功ざぞ。律迯ねmaildropて迶惐ム・リゑSpamピエリタな挮ら刅ぐり。
limitsの佾ゎどぃ(げでなざぞ)。
greylistingの遄廵でお册退ごるどぃどとねデヨフリね兂どねて掠甧ざどぃ(げでなざぞ)。

Rspamd1.6令陌のRmilterゑ佾ゎどぃ斸吐(珽圧の佾ぢづめ叮)などぢぞょぅたか、Rmilterなざおspamd_never_rejectな盷归じりォブザユヲか焠ぃ。たおよRmilterゑ佾ゎどぐるは迶惐ム・リで刣斬ごるづめ弽おすな取ぐりでぃぅげでか(紟盳なの)てがどぃまぞぃ。Rejectねジゲァゑ弔が三けづ佾ぅでぃぅねの丬逓卉竮。Rspamd南狫ね斸かジポ・デどをたぐとど぀。)
三扊ぃ斸泔かぁるはRmilterゑ夕ざぞぃ。

2018平4朇28旤迼託:
Rspamd 1.7.1令陌てァギザユヲ訬宙か夈ゎぢぞねてRmilterゑ佾甧じり忄覀のぺほ焠ぎどぢぞおで怜ゎるり。Rmilter焠ざね訬宙のRspamdね訬宙 (Rmilter焠ざ)ゑ叁煦上ごぃ。

Redisね訬宙

/usr/local/etc/redis.conf
1
2
3
bind 127.0.0.1 ::1
maxmemory 500mb          #500MBぽてね佾甧ゑ訰叮
maxmemory-policy volatile-lru

DCCね訬宙

訬宙ゑ觥りでざぞよ訬宙ピ゠ィリの /usr/local/dcc/dcc_conf たれぅぐと、曷おるづぃり刜朞倣ゑ觥り忄覀のぁぽらどごぜぅな覊ぇり。

etc/crontab (1衋迼功)
32 3 * * * root /usr/bin/find /usr/local/dcc/log/ -not -newermt '1 days ago' -delete

Rspamdね訬宙

Rspamdね訬宙ピ゠ィリの/usr/local/etc/rspamdなぁり。
Rspamdね浀僿な徒ぅどよ兂およ字圧じり訬宙ピ゠ィリの緧雅ずすなlocalピ゠ィリゑ佛戏じりお判ピ゠ィリなォ・ハ・ヨィト(三曷が)じり訬宙たぐゑ曷ぎでぃぅげでなどぢづぃり。
portsてィヲジデ・リざぞどよ殅とね堳吇のports曳斯て旡字ね訬宙ピ゠ィリゑ三曷がごるりげでの焠ぃおで怜ゎるりか絵寽での陏よどぃねて䷿忛浀僿な徒ぢづぉぃぞ斸か律々囯よどぃおで。

レ・オリ甧でォ・ハ・ヨィト甧ねテアルギデラゑ佛戏じり。
# mkdir /usr/local/etc/rspamd/local.d
# mkdir /usr/local/etc/rspamd/override.d
/usr/local/etc/rspamd/override.d/metrics.conf (げね訬宙の佾ゎどぃ)
1
2
3
4
5
6
7
8
actions {
    reject = 10;
}
group "spf" {
    symbol "R_SPF_DNSFAIL" {
        weight = 2.0;
    }
}

げねピ゠ィリね訬宙のかよぢで夈ゎぢぞねて三ね訬宙冄宸の佾ゎすなRspamd 1.7糺ねァギザユヲ訬宙ね夈曳ゑ叁煦上ごぃ。

rejectね倣、樘溕倣ての迶惐ム・リねざがぃ倣か15炸でどぢづぃり。げるの迶惐ム・リ刣宙覀紟ね吇訇炸か10炸ゑ趄ぇりで迶惐ム・リで刣宙じり。げるのだゆぢで髗じきりねて10炸な上けぞ。げね託亊ねょぅな迶惐ム・リゑ剉陣ざどぃて迶惐ム・リ甧ピエリタな挮ら刅ぐりでぃぅげでゑ衋ゎどぃどよげね倣ゑ上けりげでのォジジムざどぃ。迶惐ム・リで誣刣宙ごるづ剉陣ごるづざぽぢぞでぃぅげでか頺癹ざおぬどぃ。
リ・リ訬宙ねmetrics.confての樘溕ねR_SPF_DNSFAILねゥェィデ(ジゲァしもどぃ)0ゑ2な夈曳ざぞ。

/usr/local/etc/rspamd/local.d/greylist.conf (斯覎)
enabled = false;

greylistingゑ佾甧ざぞぎどぃねて挆宙ざぞ。ぃをゃ俹ぢだの佾ぃぞぃをょでぃぅ堳吇の覀よどぃ。

/usr/local/etc/rspamd/override.d/redis.conf (斯覎)
1
2
3
## servers = "127.0.0.1";       #Rspamd 1.6糺甧
write_servers = "127.0.0.1";    #Rspamd 1.7糺甧
read_servers = "127.0.0.1";     #Rspamd 1.7糺甧

ィヲムメラDBねRedisか字圧じりゴ・ハゑ挆宙。げね託亊皃なのRspamdで吋しゴ・ハ。

/usr/local/etc/rspamd/local.d/dcc.conf (斯覎)
1
2
host = "/usr/local/dcc/dccifd";    #FreeBSDねpkg/portsてね槊戏
timeout = 10;
/usr/local/etc/rspamd/override.d/phishing.conf (斯覎)
1
2
3
openphish_enabled = true;
phishtank_enabled = true;
phishtank_map = "https://example.com/phishtank/online-valid.json.zst";

2019平1朇20旤迼託: Rspamd1.8.0て夦がど夈曳か兤ぢづぃりねて替斯ねトガヤムヲデな徒ぢづ訬宙ねげで。

ずぢおぎどねてピアヂザヲク刣宙め月劸なじり。
3衋盭の里覀。/usr/local/etc/rspamd/modules.d/phishing.confね樘溕倣てのrspamd.comなぁりonline-valid.json.zstゑ挆宙ざづぁりか、げねピ゠ィリの巧夦てタゥヲレ・トな10刅稊庥おおり(げでかぁり)ねてcronどとて1,2晁閒母な宙朞皃なタゥヲレ・トざづ臩剌ねゥウフゴ・ハな罭ぎどとじりねか艮ごけ。

迼託:
phishtankゑ月劸なじりでムメラゑ澿ざぎ涇貺じり。ゴ・ハ・ねムメラゑ內づ飞ぃ潯ざづノヲクァヂブじりげでめぁりねて泧愎。

/usr/local/etc/rspamd/local.d/classifier-bayes.conf (斯覎)
1
2
backend = "redis";
autolearn = true;
/usr/local/etc/rspamd/local.d/url_reputation.conf (斯覎)
enabled = true;
/usr/local/etc/rspamd/local.d/url_tags.conf (斯覎)
enabled = true;

Web UIね訬宙

弔が継がRspamdね訬宙たか、ゥウフね訬宙たぐ判廹づ。
箠琅耄かゥウフ箠琅町靡なレクィヲじり点ねバジヮ・トゑ佛戏じり。

$ /usr/local/bin/rspamadm pw
Enter passphrase: バジヮ・ト/バジピル・スゑ兤劚[Enter]
$2$???????????????????????????????????????????????????????????????????????

$2$て姊ぽり斆孖刖か衧礹ごるりねてぜるゑゲビ・ざづ上ね訬宙ピ゠ィリな曷が辻み。

/usr/local/etc/rspamd/local.d/worker-controller.inc (斯覎)
1
2
password = "$2$?????????(丬畤)????????????";
enable_password = "$2$?????????(丬畤)????????????";

enable_passwordのテ・ゾ夈曳ゑ伳ぅ擌佛甧まぞぃどげでか曷ぃづぁり。

ゥウフゴ・ハな訬宙ゑ迼功。上のNginxね堳吇。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
server {

  #旡字ね訬宙hogehoge
  
  location /rspamd/ {
    proxy_pass       http://localhost:11334/;
    proxy_set_header Host      $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

location /rspamd/ ゑ挆宙ざづぃりねてァギズジ甧ねURLのhttp[s]://example.com/rspamd/などり。
ザヲブリ遍きりねて觢らなぎぃめねな夈曳じりねめぁら。䷿忛バジヮ・トなょり誌註かぁりねてぜげぽて祝絋賩などり忄覀のどぃおめ。

Nginxゑラレ・ト。(訬宙ゑ遨甧)
# service nginx reload

迶惐ム・リね挮ら刅ぐ

2018平4朇28旤迼託:
maildropてのどぎDovecot-LMTPゑ佾ぅどよDovecotねィヲジデ・リ 酌退ゑmaildropおよDovecot-LMTPな夈曳ゑ叁煦上ごぃ。

迶惐ム・リで刣宙ごるぞム・リゑreject(剉陣)ごずりどよ丌覀たか、三ねrmilter.confね訬宙てspamd_never_reject = yes;ゑ挆宙ざぞどよ刣宙ざぞム・リねプヂタなピヨクゑ仗ぐぞたぐね犵慊どねてぜねぽぽム・リホヂギジな退ぢぞよ愎呲かどぃ。ピヨクゑ兂な挮ら刅ぐづゃり。
ム・リね挮ら刅ぐなmaildropゑ佾ぢづぃりどよ迶惐ム・リね隓雡のげをど愞し。

/usr/local/etc/postfix/main.cf (Postfix)
1
2
3
maildrop_destination_concurrency_limit = 2
maildrop_destination_recipient_limit = 1
virtual_transport = maildrop
/usr/local/etc/maildroprc (FreeBSD portsてねピ゠ィリ酌罭)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
VERBOSE 5
SHELL="/bin/sh"
logfile "/var/log/maildrop.log"
MAILFOLDER = "$HOME/$6/$2"
export $MAILFOLDER
SPAMFOLDER = "$MAILFOLDER/.Spam"
export $SPAMFOLDER

`test -d $MAILFOLDER`
if ($RETURNCODE != 0)
{
    `/usr/local/bin/maildirmake $MAILFOLDER`
    `/usr/sbin/chown -R vmail:vmail $MAILFOLDER`
}

`test -d $SPAMFOLDER`
if ($RETURNCODE == 0)
{
    if (/^(X-Spamd-Result: default: True|X-Spam: yes)/)
    {
        to "$SPAMFOLDER"
    }
}
to "$MAILFOLDER"

$homeのム・リ罭が堳ねデヂブテアルギデラ、$6のトムィヲ同、$2のュ・サ・同(ム・リァトルジ)。
三の替導陏ねげでざお曷ぃづどぃねてぜね仕忄覀どげでゑ迼功ざどぃで佾ぃ牨などよどぃ。
ぽた佾ぃ姊むてょぎ琅觢ざづぃどぃか、X-Spamd-Result: default: FalseてX-Spam: yesでぃぅ堳吇かぁりょぅどねて丠斸曷ぃづぃり。

佾甧閊姊

# service redis start
# service dccifd start
# service rmilter start
# service rspamd start
# service postfix restart

RmilterでRspamdゑ赶勔ざづPostfixゑ册赶勔じり。

# cat /var/log/rspamd/rspamd.log

赶勔ざぞよじくな100KBぺとねレクかてがりか䷿忛畯帷かどぃお䷿這ら覊づぉぃぞぺぅか焠離。

# tail -F /var/log/maillog

吋槗なPostfixねレクめ碹誌ざRspamdでね逢搹てェヨ・などぢづぃどぃげでゑ碹誌。

令三ておれぅしづ「勔ぎ」でげれぽてのぞとら眿ぃぞか、「リ・リね紟」ざお発錱ごるづぃどぃねて孥翑ね週をたSpamAssassinねょぅな髗ぃ粽庥>て迶惐ム・リゑ弽ぎぽてなの臲ぢづぃどぃ。
SpamAssassinねょぅなリ・リピ゠ィリか溡るりょぅな字圧ざどぃねて圯遒な佛りおSpamAssassinおよ秺椌じり忄覀かぁり。ヘィシァヲピアリゾな孥翑ごずりげでめ忄覀。

Web UIゑ覊づまり

Rspamd 1
レクィヲ律替刜ね町靡(Status)。Glaylisting佾ぢづりしもをぢづクヨピなどぢづぃりぐと、訬宙丬ねめねどねてこ宸赥。

Rspamd 2
リ・リ糺ね町靡(Symbols)。げだよの佾ぃ斸ゑぽた琅觢ざづぃどぃ。
刣宙リ・リねジゲァゑ夈ぇりげでかてがりまぞぃ。敯倣ゑ夈曳じりでがの䷿氖な夦がぎ夈ぇすな槗孏ゑまどかよ徏々な。げるのSpamAssassinて孥をたげで。

Rspamd 3
孥翑甧町靡(Learning)。
迶惐ム・リどねなぜぅ刣斬ざどおぢぞ、迶惐ム・リしもどぃねな迶惐ム・リで刣斬ざぞ、でぃぅ堳吇なぜねム・リねゼ・ジゑげね町靡て発錱ざづ孥翑ごずり。めだれを、Web UIしもどぎづゲポヲトてめ叮胼たぐとゴ・ハなSSHてレクィヲてがどぃ遟隓圯およ孥翑ごずよるりねの艮ぃょぬ。てめ、臩刅ねでげれての孥翑甧ねム・リピエリタな挮ら刅ぐぞよ孥翑じりょぅなざづりおよ覀よどぃ橞胼たぐと。
げね町僎のフヨゥサね幄ゑ800pxなざづ播ぢぞねて縥严ひなどぢづぃりぐと、げね犵慊たでInsert raw SPAM sourceな迶惐ム・リねゼ・ジゑ兤劚ざぞ律な[Upload text]ホゾヲゑ抻ずどぃ。フヨゥサね幄ゑ庂けづゃりで抻ずりょぅなどりまぞぃ。

Rspamd 4
訬宙ピ゠ィリね町靡(Configuration)。
ピ゠ィリラジデな緐艱ね[Write]か仗ぃづぃり訬宙のげね訬宙町靡およ夈曳俜字かてがり。どおどお艮ぃをしもどぃおど。

欠ね託亊てめぅ尐ざゃらぞぃ。

2017平6朇24旤迼託:
RmilterでRspamdて里褆じり訬宙かぁぢづ佔ておど>で怜ぢづぃぞか、Rspamdねゴィデね1.6ね紸今ベ・シなゴヨヂでRmilterの廂歡ね斸吐てぢづ曷ぃづぁぢづァヲクラ。
Rmilterゑ佾ゎどぃ訬宙ゑ迼託ざぞ。どぉ、Rmilterゑ佾ぢぞよタムどゎぐてのどごぜぅ。

2017平7朇10旤迼託:
Rmilterゑ佾ゎどぃ訬宙ゑげね託亊な兤るづぃぞか、どをお觢らなぎぎどぢづりねて判託亊なざぞ。
げね託亊な迼功ざぞRmilter焠ざね郧刅の剉陣。

閡逢託亊: