まず下準備します。
# vi /etc/postfix/main.cf
※以下を末尾に記述します。
#指定したIPやホストからのアクセスを遮断します。
smtpd_client_restrictions=permit_mynetworks,check_client_access hash:/etc/postfix/reject_list,permit
いよいよスクリプト作成しますー!
# vi bayonettapostfix
#!/bin/bash
# rejectされたIPを抽出し一意な行だけ抜き出す
cat /var/log/maillog | grep reject | grep -o -e ‘[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+’ |
uniq | sort | uniq |
# 抜き出した行の末尾にREJECTを付ける
while read line
do
echo $line ‘ REJECT’ >> /etc/postfix/reject_list
done
# rejectされたメールアドレスを抽出し一意な行だけ抜き出す
cat /var/log/maillog | grep reject | grep -o -e ‘[0-9a-zA-Z]\+@[0-9a-zA-Z]\+\.[0-9a-zA-Z]\+’ |
uniq | sort | uniq |
# 抜き出した行の末尾にREJECTを付ける
while read line
do
echo $line ‘ REJECT’ >> /etc/postfix/reject_list
done
# ファイルの重複行の削除用のlist2を便宜的に使って正規の拒否リストに渡します。
sort /etc/postfix/reject_list | uniq > /etc/postfix/reject_list2
cat /etc/postfix/reject_list2 > /etc/postfix/reject_list
##############################################
######## 自身のドメインは規制対象外とする #######
#コメントを外して指定してね☆
# mydomain=example.com
# sed -i -e “/$mydomain/d” /etc/postfix/reject_list
###############################################
# ハッシュ化
postmap /etc/postfix/reject_list
# リストをpostfixに読み込ませる
service postfix restart
[/bash]
スクリプトに実行権限付与
# chmod 700 bayonettapostfix
試してみます。
# ./bayonettapostfix
1時間ごとに自動実行されるフォルダへスクリプトを移動させます。
# mv bayonettapostfix /etc/cron.hourly/
これでOKです。
ホワイトリストの作成
クラッカーがこちら側のドメインにテストメールした場合に
デフォルトのままだと拒絶リストに登録されてしまう可能性があるので
ホワイトリストに登録しておきます。
##############################################
######## 自身のドメインは規制対象外とする #######
#コメントを外して指定してね☆
# mydomain=example.com
# sed -i -e “/$mydomain/d“ /etc/postfix/reject_list
###############################################
↓変更
##############################################
######## 自身のドメインは規制対象外とする #######
#コメントを外して指定してね☆
mydomain=hogehoge.com
sed -i -e “/$mydomain/d“ /etc/postfix/reject_list
###############################################