- PR -

特定のIPアドレス以外のメールを拒否したい

1
投稿者投稿内容
ぐう
会議室デビュー日: 2005/05/26
投稿数: 16
投稿日時: 2005-06-24 14:02
LAN外からのメールを拒否したいユーザがあるので、該当ユーザのdot-qmailで特定のIPアドレスから発信されたメール以外は受信拒否したいのですがどうすればいいのでしょうか?
特定のメールアドレスで受信拒否する方法は見つけたのでメールアドレスをIPアドレスに変えればいいと思ったのですが、どうやらdot-qmailには送信元SMTPのIPアドレスは渡ってこないようです。


[ メッセージ編集済み 編集者: ぐう 編集日時 2005-06-24 14:13 ]
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-06-25 10:00
Bernstein氏のmess822パッケージを利用して参考例を挙げると
(別に使わなくても出来ますが)

192.168.0.0/16からのみメールを受け取りたい。

dot-qmail
| /bin/sh -c "/usr/local/bin/822field received | /bin/grep -q '(192.168' && exit 0 || exit 100" ←ココまで一行
./Maildir/

メールのrecievedヘッダを抜き出してそこに含まれるIPアドレスをチェックして
存在すればexit 0し、次の行でMaildirへ配送する。
そうでなければハードエラー(exit 100)で次の行は処理せずエラーメールを相手に返す。

スクリプトを作ってそれで判定してもいいですがそこまで
たいそうなものがいるとも思えませんが。

IPアドレスでの検索条件が複雑になるようであれば
qmail-smtpdを呼び出す際のtcpserverに渡すcdbファイルで
TCPREMOTEHOSTあたりの環境変数をハンドリングして
receivedヘッダにでるホスト名を変更するっていうのも手ですが。
(tcpserver使っていればね)

tcp.smtpd(抜粋)
192.168.:allow,TCPREMOTEHOST="allowhost"

とやっておけば192.168.0.0/16から受けたメールには
Received: from allowhost (HELO hogehoge) (192.168.0.1)
なんてなるので"allowhost"を条件に判定するとかね。
まあ、特定のユーザに限らずヘッダは変更されてしまいますけど。。。

逆に特定のネットワークだけ拒否したいならgrepを-vオプションで使うか
exitで返すコードを逆転させればいけるでしょう。


[ メッセージ編集済み 編集者: anights 編集日時 2005-06-26 17:25 ]
1

スキルアップ/キャリアアップ(JOB@IT)