Linux Server

キャリアメールの迷惑メールが多いのでFetchmail+Procmail+SpamAssassinでなんとかする

ご注意下さい

この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。

0
(0)

もうそろそろ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のまま)ようにしましょう。

記事は以上!

この記事は役に立ちましたか? | Is this article useful for you?

評価をお願いします | Please leave your rating.

平均 | Av.: 0 / 5. 投票数 | Votes: 0

最初の評価を下さい | Please vote for the first rating.

-Linux Server
-, , , ,

© 1999 - 2021 蒲田ネット