web-dev-qa-db-ja.com

Postfixへの接続のリアルタイムリストを表示する

メールボックスを持つ数百人のローカルユーザーがいるLinuxボックスでPostfixを実行しています。

Postfixサービスへのすべての着信接続(SMTP)を監視する方法はありますか?つまり「Postfixサーバーに接続されたばかりのIPアドレスx.x.x.x」と「切断されたばかりのIPアドレスy.y.y.y」のライブストリーム?

すべての着信接続を監視して、同じIPアドレスがユーザーに複数のスパムを送信しようとしている、またはリレーしようとしている傾向を探すことができるようにします(オープンリレーではありません!)。

IPアドレスがリストされているすべての接続と切断をテキストファイルまたはsyslogにダンプするだけで十分です。それとも、別のより良い方法がありますか?

ありがとう!

1
Ryan Griggs

postfixは、接続が着信すると各接続をログに記録し、ログ行は次のようになります。

Jul  8 16:25:15 swiss postfix/smtpd[11127]: connect from some.Host.or.other [192.0.2.1]

だからあなたはできる tail -Fログファイル(私のシステムでは/var/log/mail.log)、grepを使用して必要な回線をフィルタリングし、ライブトラフィックを監視します。

4
Flup

上記のポスターは近いです。

tailを使用すると、ファイルの最後の10行を確認できます。 -fスイッチを使用すると、メールログファイルに追加された新しい行を表示できます。

cd /var/log

tail -f maillog

Ctrl+c 脱出する。

これはすでに/var/log/maillogというファイルに書き込まれているので、特定の情報を抽出する場合を除いて、別のファイルを作成する理由がわかりません。

メールログだけを読みたい場合は、お気に入りのエディターを使用するか、次のようにします。

less maillog

を打つ Enter (return)キーを押すと、ファイルが一度に1行下に移動します。または、 Page Down 全画面移動のキー。

Hヒット q キーはあなたを逃れます。

1
Paul Hickox

私は次のことが役に立ちました:

tail -f maillog | grep connect

しかし、必要に応じて、切断または特定のIPをgrepできますか?

0
Learning_Linux

これにより、mail.logファイル内のすべてのIPの数がわかるため、迷惑なIPを特定できます。

grep connect /var/log/mail.log |grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | sort | uniq -c | sort

Ipsetを使用してブラックリストを作成し、ipテーブルに追加します

ブラックリストの作成:

ipset create <nameof blacklist> hash:ip (or net) -hashsize 4096

ipset add <nameof blacklist> <IP or network/nn>

ブラックリストと一致してドロップ:

iptables -I INPUT -m set --match-set <nameof blacklist> src -j DROP
iptables -I FORWARD -m set --match-set <nameof blacklist> src -j DROP

おそらくこれをスクリプト化して自動化することができます。

0
A Friend