magic-smtpdのインストール
存在しないユーザ宛で届くメールがとんでもなく送られ、必要なメールの遅配が目立ってきたため
qmail-smtpdからmagic-smtpdに移行したときのインストールメモです
環境としてはqmail-smtpdにvpopmail,simscan,spamassassin,clamavという環境だったのですが、qmail-smtpdは
存在しないユーザ宛のメールも、すべて受け取りsimscanを通したあと削除されるため、spamassassinの処理時間が
ムダに消費されていました。
そこで、宛先のチェック、存在しなければ削除できればと思いmagic-smtpdを導入しました。
1.インストール
http://www.linuxmagic.com/opensource/magicmail.dep から最新版をダウンロード
(2010.10.7時点では version 0.8.4-2 が最新)
解凍
#tar xvfz magic-smtpd-0.8.4-2.tar.gz
そのままmakeするとエラーが出たためソースの修正
common/ip2country.c に追加
#include <linux/limits.h> ← 追加
magic-smtpd/magic-smtpd.h の42行目をコメントアウト
#ifndef
_MSD_H |
ディレクトリを作成
#mkdir
-p /etc/magic-mail/control
ビルド
#make
qmail/binにコピー
#cp magic-mail/magic-smtpd /var/qmail/bin/
2.設定
/etc/magic-smtpd/control/ にファイルを作成する
ファイル | 設定値 |
check_valid_users | true |
ext_check_user_prog | /home/vpopmail/bin/vchkpw |
ext_check_user_prog | /usr/local/bin/vpopmail-check-user.sh |
max_invalid_rcpt | 1 (不正中継チェックでは途中で切断されるためテストの時は0にする) |
auth_enable | true |
/usr/local/bin/vpopmail-check-user.sh の作成
#!/bin/sh |
vpopmail/valias、vpopmail/vuserinfoの変更
(現状の環境のままテストするためコピーしておく)
valias → valias-magic
vuserinfo → vuserinfo-magic
#cp /home/vpopmail/bin/valias
/home/vpopmail/bin/valias-magic
#cp /home/vpopmail/bin/vuserinfo
/home/vpopmail/bin/vuserinfo-magic
#chmod 4755 /home/vpopmail/bin/valias-magic
#chmod 6755 /home/vpopmail/bin/vuserinfo-magic
#ls -l
-
rwx--x--x 1 vpopmail vchkpw 99448 2010-09-30 15:39 valias設定内容の確認
#./magic-smtpd -s
DEBUG: loading controls from environment
where | option | value
------------------------------------------------------------
environ | tcpremoteip | (null)
environ | tcplocalip | (null)
environ | tcpremotehost | (null)
environ | tcpremoteinfo | (null)
environ | tcprelayclient | (null)
DEBUG: loading controls from directory: /etc/magic-mail/control
where | option | value
------------------------------------------------------------
loaded | auth_enable | 1
default | check_valid_from | 0
loaded | check_valid_users | 1
loaded | dump_core | 0
default | dynamic_dns_regex_filename | /etc/magic-mail/control/dynamic_dns_regexes
loaded | ext_check_passwd_prog | /home/vpopmail/bin/vchkpw
loaded | ext_check_user_prog | /usr/local/bin/vpopmail-check-user.sh
default | ext_spam_rule_prog | (null)
default | ip2country_datadir | /usr/local/share/perl/5.6.1/IP/Country/Fast
default | max_hops | 100
loaded | max_invalid_rcpt | 1
default | max_line_length | 1024
default | max_rcpt | 0
loaded | max_smtp_cmds | 101
default | qmail_queue | /var/qmail/bin/qmail-queue
default | rcpt_delay_at | 0
default | rcpt_delay_inc | 0
default | rcpt_delay_max | 0
default | rfc_addr_only | 0
default | stray_newline_detection | 1
default | spam_check_enable | 0
default | spam_log_file | (null)
default | spam_rule_dbfile | /etc/magic-mail/dbfiles/spam.db
default | tls_cadir | /etc/ssl/certs
default | tls_cafile | (null)
default | tls_certificate | /etc/magic-mail/control/cert.pem
default | tls_dhparams | /etc/magic-mail/control/dh.pem
loaded | tls_enable | 1
default | tls_keyfile | /etc/magic-mail/control/cert.pem
default | tls_password | (null)
default | use_dbfile | 0
default | user_info_dbfile | /etc/magic-mail/dbfiles/user.db
DEBUG: loading controls from directory: /var/qmail/control
where | option | value
------------------------------------------------------------
loaded | defaultdomain | mail.xxxx.jp
loaded | me | mail.xxxx.jp
default | smtpgreeting | MagicMail Daemon with Built-In Anti-Spam\See
http://www.linuxmagic.com for info
default | databytes | 2147483646
loaded | timeoutsmtpd | 60
default | badmailfrom | (null)
タイムアウトも設定
ファイル | 設定値 |
/var/qmail/control/timeoutsmtpd | 60 |
起動スクリプト
(とりあえずポート11000でテスト)
#FOR SMTP 11000 echo "Starting qmail. port 11000" tcpserver -H -R -v \ -u $QMAILDUID -g $QMAILDGID \ -x /etc/tcp.smtp.cdb \ 0 11000 \ /var/qmail/bin/magic-smtpd \ ← magic-smtpdを指定 2>&1 | /var/qmail/bin/splogger magic-smtp 2 & |
動作確認
# telnet localhost 11000 Trying
::1...
telnet: connect to address ::1: Connection refused Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220-mail.xxxx.jp ESMTP
220-MagicMail Daemon with Built-In Anti-Spam
220 See
http://www.linuxmagic.com
for info
mail from
zzzz@xxxx.jp
250 ok
rcpt
to:validuser@xxxx.jp
← 存在するアドレス
250 ok
rcpt
to:invaliduser@xxxx.jp
← 存在しないアドレス
550 Too many invalid user RCPT's sent. Exiting.
Connection closed by foreign host.
mailログの確認
Oct 7 08:32:20 mail smtpd: 1286407940.137946 tcpserver: pid
27371 from 69.49.43.201
Oct 7 08:32:20 mail smtpd: 1286407940.137961 tcpserver: ok 27371
0:192.168.200.12:25 :69.49.43.201::4532
Oct 7 08:32:20 mail msd[27371]: Initializing for connection from 69.49.43.201
Oct 7 08:32:20 mail msd[27371]: EHLO command received, args: on.ca
Oct 7 08:32:20 mail msd[27371]: HELO host does not match TCPREMOTEHOST
Oct 7 08:32:21 mail msd[27371]: MAIL command received, args:
FROM:<aipabo5684@on.ca>
Oct 7 08:32:21 mail msd[27371]: Allowed to relay: no
Oct 7 08:32:21 mail msd[27371]: rcpthost [xxxx.jp] matched [xxxx.jp]
Oct 7 08:32:21 mail msd[27372]: running external check user program: [/usr/local/bin/vpopmail-check-user.sh]
[oqaeran9914@xxxx.jp]
Oct 7 08:32:21 mail msd[27371]: RCPT command received (69.49.43.201), args:
oqaeran9914@xxxx.jp (local/noexist)
Oct 7 08:32:21 mail msd[27371]: too many invalid rcpts: 1
Oct 7 08:32:21 mail msd[27371]: Exiting
Oct 7 08:32:21 mail smtpd: 1286407941.912760 tcpserver: end 27371 status 256
Oct 7 08:32:21 mail smtpd: 1286407941.912793 tcpserver: status: 6/40
以上で完了、ポートをsmtpに変更する