ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
もうそろそろ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のまま)ようにしましょう。
記事は以上!