systemd.pathで迷惑メール送信元をブロックする

先日、迷惑メール送信元をブロックするという話を書いたんだけども、このinotifywaitでやる方法はイマイチだなと。というのもスクリプトが自動起動してくれないからで、これをsystemdでなんとか出来ないかmanを調べていたらsystemd.pathというのを見つけた(なので詳細はman 5 systemd.pathね)。うわー、ほんと何でもあるなsystemd…。

まず、/etc/systemd/user/spam-monitor.serviceを作る。

[Unit]
Description="Execute a script to block the IP address where a spam came from"

[Service]
ExecStartPre=/root/bin/block-spam-ip
ExecStart=/root/bin/sync-fw

[Install]
WantedBy=multi-user.target
WantedBy=default.target

そして、/etc/systemd/user/spam-monitor.pathも作る。

[Unit]
Description="Monitor spams in Maildir/.Junk/cur"

[Path]
PathChanged=/home/rio/Maildir/.Junk/cur/
Unit=spam-monitor.service

[Install]
WantedBy=multi-user.target
WantedBy=default.target

追記(2021.11.10):multi-user.targetはuserのunitでは使えないので、再起動した時に自動的に起動してこない。代わりにdefault.targetを用いる。

両方ともchconしておく。

$ sudo chcon system_u:object_r:etc_t:s0 /etc/systemd/user/spam-monitor.*

enableする。

$ sudo systemctl --user daemon-reload
$ sudo systemctl --user --now enable spam-monitor.service
$ sudo systemctl --user --now enable spam-monitor.path

spamが届くと/var/log/messagesに…

Nov 10 01:47:41 www systemd[265205]: Started "Execute a script to block the IP address where a spam came from".

おおう、発火した。inofityを使ってるという点ではinofitywaitと同じなんだけど、systemdが起動してくれるんで楽。こりゃ、良いもの見つけたw

タイトルとURLをコピーしました