もうそろそろAhamoに変更するのでキャリアメールは使わなくなる予定なんですが…。
以前にも記事にしましたが、すでにPostfix+SpamAssassinを運用している方であれば、FetchmailとProcmailを追加導入すればキャリアメールの迷惑メールをSpamAssassinでチェックすることができますのでご紹介します。
-
-
Postfix + SSL + IPv6 + ClamAV + SpamAssassin + SPF + DKIM + DMARCの構築方法
CentOS8 + Postfix + Dovecotでセキュリティも確保した構築方法を詳しく、全設定ファイルとともに解説します。IPv6にも対応し …続きを見る
私の場合、長らくドコモユーザーですのでドコモメールを例に設定方法をご紹介致します。
この記事のもくじ
インストール
# dnf install fetchmail メタデータの期限切れの最終確認: 2:29:46 時間前の 2021年02月10日 10時27分37秒 に実施しました。 依存関係が解決しました。 ================================================================================================================================================================ パッケージ アーキテクチャー バージョン リポジトリー サイズ ================================================================================================================================================================ インストール: fetchmail x86_64 6.3.26-19.el8 appstream 578 k トランザクションの概要 ================================================================================================================================================================ インストール 1 パッケージ ダウンロードサイズの合計: 578 k インストール済みのサイズ: 2.2 M これでよろしいですか? [y/N]: y
設定
ドコモ用ユーザーを作成
今後のために、ユーザを追加したらホームディレクトリに自動的にMaildirが作成されるようにしておきます。
# cd /etc/skel # mkdir -p Maildir/{new,cur,tmp} # chmod -R 700 Maildir
ユーザの作成を行います。
# useradd -g 503 docomo # passwd docomo ユーザー docomo のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。 # su - docomo $ ls -al 合計 16 drwx------ 3 docomo guest 91 2月 10 16:23 . drwxr-xr-x. 6 root root 77 2月 10 16:23 .. -rw-r--r-- 1 docomo guest 18 7月 22 2020 .bash_logout -rw-r--r-- 1 docomo guest 141 7月 22 2020 .bash_profile -rw-r--r-- 1 docomo guest 376 7月 22 2020 .bashrc -rw-r--r-- 1 docomo guest 658 3月 21 2020 .zshrc drwx------ 5 docomo guest 39 2月 10 16:21 Maildir $ exit ログアウト #
Fetchmail
/home/docomo/.fetchmailrcを作成します。パーミッションは600にしておきましょう。
set daemon 30 # デーモン化し、30秒おきにチェック set no bouncemail # エラーメールを送信者に転送しないための設定 set logfile Maildir/fetchmail.log # ログファイル defaults protocol IMAP # pop3 か imap などプロトコル指定 no mimedecode # メールサブジェクトが文字化けしないため(サブジェクトをデコードしないよう)に記述 ssl # SSLで通信 poll imap2.spmode.ne.jp # imapサーバ port 993 # 接続先ポート user "ユーザー名" # ユーザ名 password "パスワード" # パスワード 平文で丸見えである keep # メールを残す。消したい場合は flush mda "/usr/bin/procmail -d docomo" # 受信したメールをProcmailに送る。ユーザを -d にて指定する
Procmail
/home/docomo/.procmailrcを作成します。パーミッションは600にしておきましょう。
SHELL=/bin/bash PATH=/usr/bin:/bin DROPPRIVS=yes MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ SPAM=$MAILDIR/".Junk"/ LOGFILE=$MAILDIR/procmail.log # ログ出力先 LOCKFILE=$MAILDIR/procmail.lock #VERBOSE=ON # 詳細ログ出力 # SpamAssassinにわたす :0fw | /usr/bin/spamc # 未承諾広告メール削除※システムの文字コードがUTF-8(デフォルト)の場合 :0 * ^Subject:.*iso-2022-jp * ^Subject:\/.* * ? echo "$MATCH" | nkf -mwZ2 | sed 's/[[:space:]]//g' | egrep '未承諾広告※' #/dev/null $SPAM # @...数字.comアドレスの拒否 # 例) @raa8as7.com, @rr88asg.com, @yataw9a.com, @rauga48e.com #:0 #* ^From:(.*)@([a-zA-Z_\-]*)[0-9](.*)([0-9]+).*\.com #$SPAM # SpamAssassin がスパム判定したメールはスパム専用メールボックスへ配送 :0 * ^X-Spam-Status: Yes $SPAM
ここまでできたら、docomoユーザーでfetchmail -v と起動して動作確認をしてください。
自動起動(Supervisord)
fetchmail + procmailで期待通り動作したら、次は自動起動する方法です。systemdでユーザーごとに設定する方法もありますが、私はfetchmailをsupervisordで自動起動することにします。
[program:fetchmail] command=/usr/bin/fetchmail -v autostart=true autorestart=false stopsignal=QUIT stdout_logfile=/var/log/supervisor/fetchmail.log stderr_logfile=/var/log/supervisor/fetchmail-error.log user=docomo directory=/home/docomo environment=
supervisordの再起動を行いましょう。
# systemctl restart supervisord
ログローテーション設定
procmail.log、fetchmail.logは大量に出力されますので、必ずログローテーションの設定を行いましょう。
/etc/logrotate.d/fetchmailというファイルを作成します。
/home/*/Maildir/procmail.log /home/*/Maildir/fetchmail.log { rotate 8 missingok sharedscripts postrotate /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true endscript }
/etc/cron.daily/logrotateから呼び出されるのでプロセスの再起動等は不要です。
スマホ側の設定変更も忘れずに
スマホのメールの受信設定を変更します。変更するのは受信メールサーバーのみで送信メールサーバーは変更しない(ドコモのsmtp.spmode.ne.jpのまま)ようにしましょう。
記事は以上!