高原の里 > パソコン > > qmail勘所 |
qmail勘所tcpserverでの管理法daemontoolsの中のtcpserverを用いると、何かの原因でqmailがとまっても再起動してくれたり、ログの管理をしてくれて便利です。アドレス http://tools.qmail.jp/daemontools/ などを参考にしてインストールしてみてください。次に、「http://djb.qmail.jp/qmail/faq/admin.html#supervise」を参考にしてディレクトリ/service/qmailと/service/qmail-smtpを作ります。 /service/qmailについては次のようにします。procmailを使えるようにして、メーリングリストやcronが出すメールを振り分けられるようにします。 /service/qmail/run
#!/bin/sh
exec < /dev/null
exec 2>&1
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start '|preline procmail' splogger qmail
/service/qmail/log/
ログディレクトリを作成します。
/service/qmail/log/run
#!/bin/sh
exec setuidgid qmaill multilog t ./main
/service/qmail/log/mail/
この下にログファイルがたまります...
/service/qmail-smtp/ディレクトリについては次のようになると思います。 /service/qmail-smtp/run
exec tcpserver -v -p -u qmailのユーザID -g qmailのグループID -x /var/qmail/control/tcp.smtp.cdb 0 smtp
/service/qmail/log/
ログディレクトリを作成します。/service/qmail/logと同様です。
/service/qmail/log/run
#!/bin/sh
exec setuidgid qmaill multilog t ./main
/service/qmail/log/mail/
この下にログファイルがたまります...
スパム対策逆引きできないホストには応答しないスパムメール対策の最も基本は、ウェブ上にメールアドレスを載せないことです。メールアドレスをPNGやJPEG形式のイメージにて表示するか、問い合わせフォームをつくり、そこからメールを送信していただくようにしましょう。 管理者としては、メールサーバにてスパムメールを受け取らないようにしましょう。多くのスパムメールは逆引きできないホストから送信されていますので、逆引きできないホストからのメールを受け取らないことはスパム対策として有効です。 上記のtcpserverにてqmailの管理を行っているときには/service/qmail-smtp/runを、通常のスクリプトでの起動のときは/var/qmail/rcを次のように変更します。 /service/qmail-smtp/run
exec tcpserver -v -p -u qmailのユーザID -g qmailのグループID -x /var/qmail/control/tcp.smtp.cdb 0 smtp \
このスクリプトは、tcpserverにて逆引きを行い、shにて環境変数TCPREMOTEHOSTが設定されていなければエラー"451
bad reverse DNS"を返して切断するようにします。スパムデータベースとして、"relays.ordb.org"と"sbl.spamhaus.org"と"bl.spamcop.net"を選択しています。
ホワイトリストとブラックリストの管理ホワイトリストとブラックリストの管理は重要です。前項の対策をしたにもかかわらずスパムメールがきたら、メールヘッダから接続してきたホスト名を見て、データベースファイル /var/qmail/control/tcp.smtp.cdb を更新し、そのホストからのスパムメールを受け取らないようにしましょう。例えば次のようなデータベースの元ファイル /var/qmail/control/tcp.smtp を作ります。IPアドレスでの範囲指定(例えば192.168.0.0/24は192.168.0.)や、ホスト名のワイルドカード(例えば、何とか.amazon.comを全て許可したければ、=.amazon.comと書く)が使えます。 /var/qmail/control/tcp.smtp
#---------------------------------------------------------------------
# local area network
#---------------------------------------------------------------------
ローカルネットワーク:allow,RBLSMTPD="",RELAYCLIENT=""
127.:allow,RBLSMTPD="",RELAYCLIENT=""
#---------------------------------------------------------------------
# white list
#---------------------------------------------------------------------
=.amazon.com:allow,RBLSMTPD=""
...以下、同様にして普段メールを受け取る相手のドメイン名を列挙します。
#---------------------------------------------------------------------
# temporally error (451)
#---------------------------------------------------------------------
=.verizon.net:allow,RBLSMTPD="you relayed many spams to me, fix it ASAP!"
...スパムメールを送ってくるドメイン名を列挙します。
#---------------------------------------------------------------------
# permanent error (553)
#---------------------------------------------------------------------
=.rr.com:allow,RBLSMTPD="-atode saisoshite kudasai."
...スパムメールを送ってくるドメイン名を列挙します。
ワイルドカードにて記述したほうが管理が楽です。上記の例ではverizon.net(アメリカのインターネットプロバイダ。たくさんのスパムメールを送ってくる)からのメールサーバへの接続要求に対しては一時エラーを、rr.com(これもアメリカのインターネットプロバイダ)からの接続要求に対しては恒久エラーを返します。viなどで上述の
/var/qmail/control/tcp.smtp ファイルを書き換えたら、データベースファイル
/var/qmail/control/tcp.smtp.cdb を作成しましょう。次のような Makefile を
/var/qmail/control 内に作成しておけば、このディレクトリで make を実行するだけでデータベースを更新できて便利です。/var/qmail/control/Makefile
tcp.smtp.cdb: tcp.smtp
tcprules tcp.smtp.cdb /tmp/tcprules$$ < tcp.smtp
svc -t /service/qmail-smtpd
tcp.smtp.cdb: tcp.smtp の次の行のインデント(字下げ)にはタブを使うことに注意しましょう。 |