* [[qmail]]
メールサーバ(Mail Transfer Agent)です。ありゃ?いつのまにかパブリックドメインになっている!んーでも5年遅すぎたように思いますがどうでしょうか。
[[qmailパッケージがパブリックドメインに>http://japan.zdnet.com/oss/story/0,3800075264,20362338,00.htm]]
#contents
** 環境設定
http://cr.yp.to/qmail.htmlから
qmail
ucspi-tcp
checkpassword or checkpw(APOP対応 vpopmailを使う場合はいりません。)
qmailanalog
をダウンロードします。ソースは/usr/loca/srcに展開します。~
またhttp://mirror.averse.net/pub/FreeBSD/ports/local-distfiles/sada/もしくはhttp://ftp.sg.freebsd.org/pub/FreeBSD/ports/local-distfiles/sada/ からqmail-date-localtime.patchをダウンロードしておいてください。日本時間で表示するために必要になります。
さらにこれも落としておいてください。メールアドレス中の%と!と複数の@に対応できていないためのパッチです。これをしてないために、http://www.rbl.jp/svcheck.phpでひっかかってました。http://www.qmail.org/qmail-smtpd-relay-reject~
vpopmailを使わずに、APOP対応させてたい場合は、http://checkpw.sourceforge.net/checkpw/からcheckpw-1.01.tar.gzをダウンロードして、
tar xzvf checkpw-1.01.tar.gz
cd checkpw-1.01
make setup check
cd ..
cp ./checkpw-1.01/qmail-popup-auth.patch ./
このqmail-popup-auth.patchをあてるのはPOPユーザ用とAPOPユーザ用で2つ立ち上げるのではなく、1つで両方対応させるためのものです。ちなみにポートを指定する場合は、
tcpserver 0 110
とします。この0は、サーバを起動するIPアドレス/ホストを特定しなければ、0で、110がポートです。
またSMTP AUTHを使いたい場合は、http://members.elysium.pl/brush/qmail-smtpd-auth/より、qmail-smtpd-auth-0.30.tar.gzをダウンロードして、(31は使わず。理由は下で) Outbound Port25 Blocking をいろいろなISPがはじめたので、もやは必須でしょうか。
tar zxvf qmail-smtpd-auth-0.30.tar.gz
cp qmail-smtpd-auth-0.30/base64.* qmail-1.03
cp qmail-smtpd-auth-0.30/README.auth qmail-1.03
cp ./qmail-smtpd-auth-0.30/base64.* .
またhttp://www.sera.desuyo.net/smtp-auth/から「qmail-smtpd-auth で SMTP-AUTH だけ許可するぞパッチ」をダウンロードしました。これが30用みたいなので、31を使ってないです。
ではさらにhttp://www.qmail.org/top.htmlからqmail-dkもダウンロードしておきます。これはsmtp-authを使ってかつSubmissionPort(587)を使って送信専用とした場合、smtp(25)は、DomainKeys認証にしておくことによって、SMTPサーバーからしか受け取らないようにできます。ただし、まだあまり普及していないらしく、試してみたい人はやってみてください。~
DomainKeysを使う場合は、http://domainkeys.sourceforge.net/より、
wget http://nchc.dl.sourceforge.net/sourceforge/domainkeys/libdomainkeys-0.68.tar.gz
tar xzvf libdomainkeys-0.68.tar.gz
cd libdomainkeys-0.68
make
gcc -DBIND_8_COMPAT -O2 -o dktest dktest.o -L. -ldomainkeys -lcrypto `cat dns.lib`
cp libdomainkeys.a ../
cp *.h ../
cd ..
wget http://qmail.org/qmail-1.03-dk-0.53.patch
cd qmail-1.03
patch -p1 < ../qmail-1.03-dk-0.53.patch
とすると
patching file Makefile
Hunk #1 succeeded at 812 (offset 4 lines).
patching file qmail-dk.8
patching file qmail-dk.c
と出力されます。qmail-1.03のフォルダでコンパイルすると
make setup check
qmail-dk,qmail-dk.8ができますので、
cp qmail-dk /var/qmail/bin/
cp qmail-dk.8 /var/qmail/man/man8/
chown qmailq:qmail /var/qmail/bin/qmail-dk
chmod 4711 /var/qmail/bin/qmail-dk
参考 http://blog.cles.jp/item/1778
またhttp://www.flounder.net/qmail/qmail-dns-patchからDNSのUDPが512バイトをこえると処理ができなくなることのパッチを落としておきます。
SPF用のパッチは、 http://www.saout.de/misc/spf/より
wget http://www.saout.de/misc/spf/qmail-spf-rc5.patch
だらだらと書いてますが、めんどくさい人はhttp://qmail.org/netqmail/のnetqmail-1.05はいろいろパッチ適応済みらしいです。spfのパッチも当たっているんですね。~
http://shupp.org/より抜粋させていただきました。
Includes these popular patches:
* smtp auth
* tls/ssl
* spf
* qmail-queue (to allow for virus scanners)
* maildir++ patch
* support oversize dns packets (not necessary if you use dnscache)
* chkuser (check for local vpopmail users, envelope syntax. requires vpopmail to be previously installed)
* spam throttle
* qregex (regular expression matching in badmailfrom and badmailto)
* big concurrency (set the spawn limit above 255)
ではqmailのインストールです。
gunzip -v qmail-date-localtime.patch.gz
tar zxvf qmail-1.03.tar.gz
cd qmail-1.03
patch < ../qmail-date-localtime.patch #<--パッチをあてる
patch < ../qmail-dns-patch #<--パッチをあてる
patch < ../qmail-smtpd-relay-reject #<--パッチをあてる
patch < ../qmail-smtpd-auth-0.30/auth.patch #<--SMTP AUTHのパッチをあてる(認証しなくても送信できてしまうらしいので、以下)
patch < ../qmail-smtpd-auth-0.30-iwm.patch #<--SMTP AUTHだけ許可パッチをあてる
patch < ../qmail-popup-auth.patch #<--パッチをあてる APOPの場合 vpopmailの場合はいらない。qmail-smtpd-auth-0.30/base64.* をソースになければコピーしておきます。
patch < ../qmail-spf-rc5.patch #<--spf対応用のパッチ ただしエラーがでるので、手で修正する。
qmail-smtpd-relay-rejectのパッチを当てている場合、qmail-smtpd.cを開いて、
int addrrelay()
{
int j;
j = addr.len;
while(--j >= 0)
if (addr.s[j] == '@') break;
if (j < 0) j = addr.len;
while(--j >= 0) {
if (addr.s[j] == '@') return 1;
if (addr.s[j] == '%') return 1;
if (addr.s[j] == '!') return 1;
if (addr.s[j] <= 0x20) return 1; <--追加
}
return 0;
}
編集しておいて、
mkdir /var/qmail
groupadd qmail
groupadd nofiles
useradd -d /var/qmail -g nofiles -s /bin/true qmaild
useradd -d /var/qmail -g nofiles -s /bin/true qmaill
useradd -d /var/qmail -g nofiles -s /bin/true qmailp
useradd -d /var/qmail/alias -g nofiles -s /bin/true alias
useradd -d /var/qmail -g qmail -s /bin/true qmailq
useradd -d /var/qmail -g qmail -s /bin/ture qmailr
useradd -d /var/qmail -g qmail -s /bin/true qmails
make setup check
エラーがでました。その場合は、error.hを修正します。extern int errno;の下に#include <errno.h>を追加。修正後、再度 make setup check
./config-fast test.com <--サーバのFQDN
ではcontrolファイルを編集します。/var/qmail/control
defaultdomain <--ドメイン名が省略された場合、補完されるドメイン名
locals <--受信するホスト名・ドメイン名
rcpthosts <--受信するホスト名・ドメイン名 バーチャルドメインのときはここに追加されています。
このとき、locals,rcpthostsは複数してすることができます。次にエイリアスの設定を行います。
cd /var/qmail/alias/
touch .qmail-postmaster
touch .qmail-mailer-daemon
touch .qmail-root
chmod 644 .qmail*
この中に&admin@mydomain.comと書いておくと、root,postmaster,mailer-daemon宛メールを転送してくれます。~
.qmail-defaultとうのもあります。行き先不明のメールのあて先で、catch-allとして設定できます。~
ではテストをしてみます。解凍したソースの中にhomeというファイルがありますので、/var/qmail/rcにコピーします。次に/var/qmail/rcを開いてMailboxをMaildirに変更します。Maildirの後ろに/は忘れないでください。これでMaildir形式に変更されます。その後ユーザごとにMaildirを作ってやる必要がありますので、ユーザのホームディレクトリで
/var/qmail/bin/maildirmake ./Maildir/
を実行します。
その後、
csh /var/qmail/rc &
で起動し、
echo "douda" | /var/qmail/bin/qmail-inject test@tete.com
とします。test@tete.comは好きなアドレスを指定してください。届いていればOKです。ではkill %1で終わっておきましょう。tcpserverのインストールをやってみます。エラーが出る場合は、errno.hのextern int errno;の下に#include <errno.h>を追加します。
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make setup check
/var/qmail/control/tcp.smtpというファイルを作成して、
192.168.1.:allow,RELAYCLIENT=""
127.0.0.1:allow,RELAYCLIENT=""
:allow
を書き込みます。ちなみにこのあたりの詳細は、[[qmail メールサーバの構築P315>http://www.amazon.co.jp/exec/obidos/ASIN/4756140017/worried-22]]にあります。
/usr/local/bin/tcprules /var/qmail/control/tcp.smtp.cdb /var/qmail/control/tcp.smtp.tmp < /var/qmail/control/tcp.smtp
POP3サーバもインストールしておきましょう。APOP対応のcheckpwの場合は、すでに上のほうで終わっています。checkpassword-0.90を解凍して、conf-homeファイルに/を/var/qmailに変更して、
cd checkpassword-0.90
make setup check
次に起動用のスクリプトです。
#!/bin/sh
[ -f /var/qmail/rc ] || exit 0
PATH=$PATH:/var/qmail/bin:/usr/local/bin
case "$1" in
start)
echo -n "Starting... qmail"
csh -cf '/var/qmail/rc &'
/usr/local/bin/tcpserver -v -u 503 -g 505 -x \
/var/qmail/control/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 \
| /var/qmail/bin/splogger smtpd 3 & <--cat /etc/passwd |grep qmaildで確認して-u -gの値を設定
/usr/local/bin/tcpserver 0 pop3 /var/qmail/bin/qmail-popup \
smtpd.test.jp /var/qmail/bin/checkpassword \
<-smtp.test.comは変更してください。またcheckpwの場合は、/var/qmail/bin/checkpasswordを/bin/selectcheckpwにします。
/bin/checkpwでPOP、また /bin/checkapoppwでAPOPのみです。
/var/qmail/bin/qmail-pop3d Maildir &
touch /var/lock/qmail
;;
stop)
echo "Shutting down qmail."
PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
if [ ! -z "$PID" ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
rm -f /var/lock/qmail
;;
*)
echo "Usage: "$0" {start|stop}"
exit 1
esac
exit 0
ついでにdaemontoolsも入れておきましょう。システムトラブルがあって止まった場合でも自動的に再起動してくれるといったすぐれもんです。
http://cr.yp.to/daemontools/install.htmlより~
参考
http://www.emaillab.org/djb/daemontools/daemontools-howto.html~
http://www.unixuser.org/~euske/doc/daemontools/myfaq/faq-3.html~
wget http://tools.qmail.jp/daemontools/daemontools-0.76.tar.gz
tar zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
./package/install
またエラーや。お約束のerror.hのextern int errno;の下に#include <errno.h>を追加です。
すると/commandにファイルが作成されているのですが、これはすべて展開したディレクトリにあるファイルのシンボリックリンクですので、気をつけましょう。/etc/inittabの最終行に
SV:123456:respawn:/command/svscanboot
という行が追加されてます。
ではログ管理ユーザを追加します。
useradd -g qmail -d /var/qmail -s /bin/false qmaillog
useradd -g qmail -d /var/qmail -s /bin/false smtplog
useradd -g qmail -d /var/qmail -s /bin/false pop3log
では自動起動するための設定用ディレクトリを作成します。
mkdir /var/qmail/services <---設定関係のディレクトリ
mkdir /var/qmail/services/qmail <---qmail用
chmod +t /var/qmail/services/qmail
mkdir /var/qmail/services/qmail/log <---log用
chown qmaillog:qmail /var/qmail/services/qmail/log
ここでログをとるためにスティッキービットがたっている必要があるので、設定しています。またdaemontoolsは/serviceの中にあるrunという名前のファイルです。
では/var/qmail/services/qmailにrunという名前のファイルを作ります。
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ splogger qmail
次に/var/qmail/services/qmail/log/runは
#!/bin/sh
exec /usr/bin/env - PATH="/usr/local/bin" setuidgid qmaillog multilog t ./main
では権限を変更しておきましょう。
chown qmaillog:qmail /var/qmail/services/qmail/run
chmod 700 /var/qmail/services/qmail/run
chown qmaillog:qmail /var/qmail/services/qmail/log/run
chmod 700 /var/qmail/services/qmail/log/run
次は/serviceにシンボリックリンクを張って起動してみます。
ln -s /var/qmail/services/qmail/ /service/qmail
ps aux | grep qmail
立ち上がっていれば成功です。次はsmtpです。
mkdir /var/qmail/services/smtpd <---smtpd用
chmod +t /var/qmail/services/smtpd
mkdir /var/qmail/services/smtpd/log <---log用
chown smtplog:qmail /var/qmail/services/smtpd/log
次に/var/qmail/services/smtpd/runは
#!/bin/sh
exec /usr/local/bin/tcpserver -v -u 503 -g 505 -x /var/qmail/control/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
保存後はちょっと/var/qmail/bin/qmail-smtpdで問題があるらしいので、修正します。リソースを使い切ってしまうらしいのです。~
参考:http://www.monyo.com/technical/unix/solaris/qmail/column_1.html
mv qmail-smtpd qmail-smtpd2
touch qmail-smtpd
chown root qmail-smtpd
chgrp qmail qmail-smtpd
chmod 755 qmail-smtpd
qmail-smtpdの内容
#!/bin/sh
ulimit -d 1024
exec /var/qmail/bin/qmail-smtpd2 ${1+"$@"}
次はsmtp用のログです。/var/qmail/services/smtpd/log/runを作成します。
#!/bin/sh
exec /usr/bin/env - PATH="/usr/local/bin" setuidgid smtplog multilog t ./main
では所有権を変更しましょう。
chown smtplog:qmail /var/qmail/services/smtpd/run
chmod 700 /var/qmail/services/smtpd/run
chown smtplog:qmail /var/qmail/services/smtpd/log/run
chmod 700 /var/qmail/services/smtpd/log/run
次は/serviceにシンボリックリンクを張って起動してみます。
ln -s /var/qmail/services/smtpd/ /service/smtpd
ps aux | grep qmail
立ち上がっていれば成功です。次はpopです。
mkdir /var/qmail/services/pop3
chmod +t /var/qmail/services/pop3
mkdir /var/qmail/services/pop3/log
chown pop3log:qmail /var/qmail/services/pop3/log
次に/var/qmail/services/pop3/runは
#!/bin/sh
exec /usr/local/bin/tcpserver 0 pop3 /var/qmail/bin/qmail-popup \
smtp.test.com /var/qmail/bin/checkpassword \ <-smtp.test.comは変更してください。またcheckpwのときは/bin/selectcheckpwです。
/var/qmail/bin/qmail-pop3d Maildir 2>&1
次はpop用のログです。/varqmail/services/pop3/log/runを作成します。
#!/bin/sh
exec /usr/bin/env - PATH="/usr/local/bin" setuidgid pop3log multilog t ./main
では所有権を変更しましょう。
chown pop3log:qmail /var/qmail/services/pop3/run
chmod 700 /var/qmail/services/pop3/run
chown pop3log:qmail /var/qmail/services/pop3/log/run
chmod 700 /var/qmail/services/pop3/log/run
次は/serviceにシンボリックリンクを張って起動してみます。
ln -s /var/qmail/services/pop3/ /service/pop3
なぜか一度
svc: warning: unable to control
といって怒られたことがあります。このときはリブートしたら起動しました。
ではnetstat -taで確認します。またsvstat /service/qmailとかでも確認できるのでみておいてください。設定が間違っているときは0か1secondsになっていますので、設定を見直しましょう。
svstat /service/qmail
svstat /service/qmail/log
svstat /service/smtpd
svstat /service/smtpd/log
svstat /service/pop3
svstat /service/pop3/log
もしくは
svstat /service/*
この場合は、さらに下の階層は確認できません。
ここで私の場合は、最初logはすべて0でした。どうも/command/multilogのシンボリックリンクの元の場所がわるかったようです。ですので、すべて実体を/commandに移動しました。
止める場合は、
svc -d /service/qmail
svc -d /service/qmail/log
svc -d /service/smtpd
svc -d /service/smtpd/log
svc -d /service/pop3
svc -d /service/pop3/log
サービスの開始は
svc -u /service/qmail
svc -u /service/qmail/log
svc -u /service/smtpd
svc -u /service/smtpd/log
svc -u /service/pop3
svc -u /service/pop3/log
めんどくさい場合は、svc -u /service/* 設定ファイルを変更した場合は
svc -h /service/qmail
です。
では早速送信してみましょう。
telnet localhost 25
HELO ドメイン名
MAIL FROM: 送信者のメールアドレス
RCPT TO: 受信者のメールアドレス
DATA
Subject:test
honnbun <--本文
. <-終わり
quit
POPの場合は、
telnet localhost 110
USER test
PASS test
STAT <--何通届いているかをみます。
LIST <--一覧を見る
RETR 1 <--内容をみる
TOP 1 100 <--100行のみ見る
quit
参考:[[POP3(Post Office Protocol version 3)>http://www.atmarkit.co.jp/fnetwork/rensai/netpro07/netpro01.html]]~
ここで-ERR authorization failed とかエラーが出る場合は、APOPの可能性があります。では、ホームディレクトリで、
/var/qmail/bin/maildirmake Maildir
とし、
cd Maildir
echo "hogepass" > .password
chmod 600 .password
でパスワードファイルを作っておきましょう。
動くの確認できましたら、/var/qmail/services/smtpd/runを変更します。不正中継を許さないようにするためです。
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/tcpserver -R -H -v -u "$QMAILDUID" -g "$NOFILESGID" \
-x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp rblsmtpd -r relays.ordb.org \
-r bl.spamcop.net /var/qmail/bin/qmail-smtpd 2>&1
tcpserverの引数で、-l0 (エルゼロ)を指定するとローカルホストの検索をしないので、遅い場合は試してみましょう。
最近めっきり送信が遅くなったので、調べてましたら、relays.ordb.orgが止まっているではないカー
http://itpro.nikkeibp.co.jp/article/NEWS/20061219/257299/?ST=virus
送信が遅いときには-Rや-Hとかよく見かけますが、まさかordbがサービスを停止していたとは思いもよらなかったです。~
[[SpamAssasinとClamAVとqmail-scanner >http://www.momo-i.org/?SpamAssasin%E3%81%A8ClamAV%E3%81%A8qmail-scanner]]~
** netqmail
#netqmailインストール
wget http://qmail.org/netqmail-1.05.tar.gz
tar xvzf netqmail-1.05.tar.gz
cd netqmail-1.05/other-patches
wget http://www.alib.jp/files/qmail-date-localtime.patch
wget http://www.qmail.org/qmailqueue-patch
cd ..
./collate.sh
cd netqmail-1.05
patch -p1 < ../other-patches/qmail-date-localtime.patch
mkdir /var/qmail
groupadd qmail
groupadd nofiles
useradd -d /var/qmail -g nofiles -s /bin/true qmaild
useradd -d /var/qmail -g nofiles -s /bin/true qmaill
useradd -d /var/qmail -g nofiles -s /bin/true qmailp
useradd -d /var/qmail/alias -g nofiles -s /bin/true alias
useradd -d /var/qmail -g qmail -s /bin/true qmailq
useradd -d /var/qmail -g qmail -s /bin/ture qmailr
useradd -d /var/qmail -g qmail -s /bin/true qmails
make setup check
cp home /var/qmail/rc
./config-fast hoge.com
vi /var/qmail/control/tcp.smtp #編集
192.168.1.:allow,RELAYCLIENT=""
127.0.0.1:allow,RELAYCLIENT=""
:allow
/usr/local/bin/tcprules /var/qmail/control/tcp.smtp.cdb /var/qmail/control/tcp.smtp.tmp < /var/qmail/control/tcp.smtp
#tcpserverインストール
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar xzvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch
patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.a_record.patch
patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.nodefaultrbl.patch
make
make setup check
#vpopインストール
http://downloads.sourceforge.net/vpopmail/vpopmail-5.4.17.tar.gz?modtime=1152720482&big_mirror=0
tar xzvf vpopmail-5.4.17.tar.gz
cd vpopmail-5.4.17
#vchkpw.cのソースを直す
# hmac_md5( challenge, strlen(challenge), password, strlen(password), digest); を hmac_md5( response, strlen(response), password, strlen(password), digest);
# return(strcmp(digascii,response)); を return(strcmp(digascii,challenge));
groupadd -g 1089 vchkpw
useradd -g vchkpw -u 1089 vpopmail
mkdir /home/vpopmail
chown vpopmail:vchkpw /home/vpopmail
mkdir /home/vpopmail/etc
vi /home/vpopmail/etc/tcp.smtp #編集
127.:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""
:allow
chown -R vpopmail:vchkpw /home/vpopmail/etc
./configure --enable-roaming-users=y --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-relay-clear-minutes=30 --enable-logging=y
make
make install-strip
** vpopmail
vpopmailを使って、複数ドメインに対応してましょう。またAPOPにも対応しております。http://www.inter7.com/index.php?page=vpopmailよりダウンロードして、とりあえず解凍します。http://www.inter7.com/vpopmail/vpopmail.htmlをよく読んでおきましょう。
cd /usr/local/src
tar xzvf vpopmail-5.4.8.tar.tar
グループとユーザを追加します。
groupadd -g 1089 vchkpw
useradd -g vchkpw -u 1089 vpopmail
ではコンパイルしましょう。POPBeforeSMTPで10分としてます。POPBeforeSMTPとは、メールを送信する前にいったん受信して、承認が受けれれば送信できるので、不正な送信ができなくなります。
./configure --enable-roaming-users=y --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-relay-clear-minutes=30 --enable-logging=y
enable-roaming-usersはPOPbeforeSMTPを有効にします。
enable-relay-clear-minutesはPOPbeforeSMTPでリレーを許可する時間です。
make
make install-strip
tcp.smtpがないとおこられる場合は、あとで作ってください。内容は、
127.:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""
:allow
です。/home/vpopmail/doc/doc_html/vpopmail.htmlを一読しておきましょう。/home/vpopmailを確認してください。また
tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
chown vpopmail:vchkpw /home/vpopmail/etc/tcp.smtp.cdb
tcprulesでtcpserver が高速アクセスできるようなバイナリ形式でcdbに書き出しときます。参考:http://www.emaillab.org/djb/tools/ucspi-tcp/tcprules.html~
では早速仮想ドメインを追加するコマンドがありますので、実行します。
/home/vpopmail/bin/vadddomain hidekazu.dhs1.sst.ne.jp
削除は
/home/vpopmail/bin/vdeldomain hidekazu.dhs1.sst.ne.jp
ちなみにユーザの追加は
/home/vpopmail/bin/vadduser hoge@hidekazu.dhs1.sst.ne.jp
削除は
/home/vpopmail/bin/vdeluser hoge@hidekazu.dhs1.sst.ne.jp
実行後/home/vpopmail/domains/に移動して追加したドメインのディレクトリができいているかどうか確認してみましょう。できておれば、/var/qmail/services/pop3にいってrunを編集します。
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" /usr/local/bin/tcpserver \
-R -H -l0 -v 0 pop3 /var/qmail/bin/qmail-popup \
test.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
また/var/qmail/services/smtpd/runも修正します。
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/tcpserver -R -H -v -u "$QMAILDUID" -g "$NOFILESGID" \
-x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
これで
telnet localhost 25
としてたとき/var/log/messagesに
tcpserver: warning: dropping connection, unable to read /home/vpopmail/etc/tcp.smtp.cdb: access denied
と表示されている場合は、
chmod 755 /home/vpopmail
またオプションの-R -Hは指定してください。送受信が遅いと感じたときにはこの指定がない場合があります。
参考:http://tools.qmail.jp/tcpserver.html~
http://www.emaillab.org/djb/tools/ucspi-tcp/tcpserver.html~
http://www.asahi-net.or.jp/~wv7y-kmr/memo/tcpserver.html~
ちなみに-Rは、identプロトコルで接続元ホスト情報を取得しないのですが、このidentプロトコルとは最初に クライアントがサーバに接続し、次にサーバが IDENT を使用してクライアント に接続し直し、クライアントが誰であるかを確認するらしいです。~
ただし逆引きできないホストからのメールを遮断したい場合は、-H(リモートホスト名を調べない)をとって、-p(パラノイドモード:接続元ホスト名を調査してそのIPアドレスが接続元IPアドレスと一致するかどうか調べる)は好みでつけてます。その後、/var/qmail/bin/qmail-smtpdの前に-b -cもつけて
=:allow
:allow,RBLSMTPD="Access denied. bad reverse DNS"
qmail-scannerを使っている場合は、
=:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
:allow,RBLSMTPD="Access denied. bad reverse DNS"
とするらしいのですが、まだ調査中です。~
ではメールアカウントを追加します。
/home/vpopmail/bin/vadduser test@goodservice.jp test2
test2がパスワードになります。削除は
/home/vpopmail/bin/vdeluser test@goodservice.jp
パスワード変更は、
/home/vpopmail/bin/vpasswd test@goodservice.jp
POPBeforeSMTPのごみは削除しておきます。
crontab -e
30 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
一度/home/vpopmail/bin/clearopensmtpを実行しておきましょう。open-smtpのファイルに接続してきたユーザのIPが入っているはずなので、確認してみてください。
ログはチェックしましょう。
tail -f /var/log/maillog
移行する場合は、
/var/qmail/control/locals
/var/qmail/control/rcpthosts
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb
あたりのファイルを持ってきます~
さてsmtp-authにするにはどうすればいいでしょうか?/var/qmail/services/smtpd/runを修正します。
exec /usr/local/bin/tcpserver -R -H -v -u "$QMAILDUID" -g "$NOFILESGID" -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp \
/var/qmail/bin/qmail-smtpd hogehostname /home/vpopmail/bin/vchkpw /bin/true 2>&1
スパムメールの拒否する場合は、
exec /usr/local/bin/tcpserver -R -H -v -u "$QMAILDUID" -g "$NOFILESGID" -x /home/vpopmail /etc/tcp.smtp.cdb 0 smtp
rblsmtpd -r relays.ordb.org -r bl.spamcop.net /var/qmail/bin/qmail-smtpd hogehostname /home/vpopmail/bin/vchkpw /bin/true 2>&1
またvchkpwの権限を変更しておきます。
chown root:root ~vpopmail/bin/vchkpw
chmod 4755 ~vpopmail/bin/vchkpw
では、qmailを再起動して、メーラから送信して、/var/log/maillogを見ると
vchkpw-smtp: password fail
vchkpw-smtp: (PLAIN) login success
なんだ?このvchkpw-smtp: password failは?http://www.marronkun.net/linux/mail/qmail_8.htmlを参考にさせていただきながら、
vpopmail(5.4.10)のvchkpw.cの706行目あたりを
hmac_md5( challenge, strlen(challenge), password, strlen(password), digest);
から
hmac_md5( response, strlen(response), password, strlen(password), digest);
へ、また723行目あたりを
return(strcmp(digascii,response));
から
return(strcmp(digascii,challenge));
に変更して、メールを送信すると
vchkpw-smtp: (CRAM-MD5) login success
と出力されるようになりました。とりあえず、メーラはOutLookExpress6(こいつのログはvchkpw-smtp: (PLAIN) login successとなっている),Becky! Ver.2,ThunderBirdで確認しました。つぎにSubmissionPortに対応させます。
exec /usr/local/bin/tcpserver -R -H -v -u "$QMAILDUID" -g "$NOFILESGID" -x /home/vpopmail /etc/tcp.smtp.cdb 0 smtp
rblsmtpd -r relays.ordb.org -r bl.spamcop.net /var/qmail/bin/qmail-smtpd hogehostname /home/vpopmail/bin/vchkpw /bin/true 2>&1
のsmtpを587にしておきます。これで送り側はSubmissionPortでsmtpAuthになりましたが、smtp(25)で受けていないので、送信はできるが受信ができない状態になってます。しょうがないので、/var/qmailを/var/qmail25でコピーして、そちらで
/var/qmail25/services/smtpd/run
を動かしました。またcontrolディレクトを2つ管理するのも面倒なので、シンボリックリンクをはってます。ではsmtp(25)のDomainKeysの設定ですが、また今度~
一度
vchkpw-submission: vpopmail user not found
このエラーが出たことがあります。
chmod u+s vchkpw
をすればいけたのですが、以前はセットアップしたやつはこんなエラーでなかったんですが、どこかで間違えたか?
***リンク
http://www.maid.ne.jp/~yy/freebsd/qmail.html~
http://members.elysium.pl/brush/qmail-smtpd-auth/~
http://www.sera.desuyo.net/smtp-auth/~ SMTP-AUTH だけ許可するぞパッチ~
[[★FCとも(゚∀゚)の会 qmailとvpopmailでsubmission(サブミッションポート)SMTP-AUTHをやってみる>http://sbol.mtechnic.jp/modules/pukiwiki/190.html]]~
[[BSDあれこれ ●qmailな環境にOutbound Port 25 Blocking対策>http://macmini.no.land.to/2006/09/qmailoutbound_port_25_blocking.html]]~
[[ninnin.net blog qmail + vpopmailな環境でサブミッションポートからの送信を行う>http://www.ninnin.net/blog/archives/cat_linux.html]]~
[[@IT qmailでsubmissionポートの設定>http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31848&forum=10&7]]~
** メッセージ
4番台:一時的エラー
Deferral(421) 指定ドメインのSMTPサービスが動作不能のためコネクションを切断
Deferral(450) メールボックス利用不可のため失敗
Deferral(451) ローカルサーバエラーのため、コマンドの実行に失敗
Deferral(452) 容量不足のため、リクエストされたメールの受信に失敗
5番台:エラー
Failure(501) 宛先が不正
Failure(511) 宛先メールボックスがない
Failure(550) メールボックスが有効でない、ユーザが存在していない
Failure(551) 宛先が拒否
Failure(553) PTRレコードが不正
Failure(554) 送信者が拒否、メールボックスが有効でない
** ssl化
465(smtps),995(pop3s)です。http://www.nrg4u.com/よりhttp://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gzをダウンロードさせていただきました。では、ucspi-tcpにパッチをあてます。ucspi-tcpを解凍したディレクトリで、
zcat ucspi-tcp-ssl-20050405.patch.gz | patch
make
cp tcpserver /usr/local/bin/tcpserverssl
では
PEM1=/tmp/openssl.`date +%s`.$$.1
PEM2=/tmp/openssl.`date +%s`.$$.2
openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2
cat $PEM1 > cert.pem
echo "" >> cert.pem
cat $PEM2 >> cert.pem
rm -f $PEM1 $PEM2
chmod 600 cert.pem
でcert.pemを作ります。make certでもいいそうです。http://www.kawaz.jp/pukiwiki/?POP%A4%C8SMTP%A4%F2SSL%B2%BD%A4%B9%A4%EBを大変参考にさせていただきました。では、/var/qmail/services/smtpd/runを修正します。tcpserverをtcpserversslに、-nでcert.pemを指定して、-sを追加して、
exec env - PATH="/var/qmail/bin:$PATH" /usr/local/bin/softlimit -m 15000000 /usr/local
/bin/tcpserverssl -R -H -v -s -u "$QMAILDUID" -g "$NOFILESGID" -x /home/vpopmail/etc/tcp.smtp.cdb -n /var/qmail/cert.pem
0 465 rblsmtpd -r relays.ordb.org -r bl.spamcop.net /var/qmail/bin/qmail-smtpd 2>&1
** セカンダリ
/var/qmail/control/smtproutesに
hoge.jp:hogehoge.hoge.jp
とするとhoge.jp宛てのメッセージをhogehoge.hoge.jpに転送します。
:hogehoge.hoge.jp
とするとすべてhogehoge.hoge.jpに転送しますが、localsとvirtualdomainsにそのドメインの設定があれば、そちらを優先しますので、確認しておきましょう。
http://www.toshikazu.org/archives/000080.html
** qmail-vida
http://qmail-vida.sourceforge.jp/からダウンロードします。SMTP認証ができバーチャルドメインと仮想ユーザにも対応しています。vpopmailをつかっていればいりません。ではユーザを作りましょう
groupadd vida
useradd -g vida pop
useradd -g vida -s /bin/false authdb
useradd -g vida -s /bin/false qmailu
次にパッチをあてます。この場合、他のソースにはpatchを当てていない状態にしておいてください。
make patch
make copy
ではqmail,checkpassword,tcpserverをインストールします。
その後は、qmail-vida-0.53/src/vidaで
make
make setup check
終了後、authdbディレクトリを作成します。
/var/qmail/bin/vida-pwdbinit
***リンク
http://qmail-vida.sourceforge.jp/~
http://www.stackasterisk.jp/tech/systemConstruction/qmail02_01.jsp~
http://omori.asama.net/qmail.html~
http://www.asahi-net.or.jp/~aa4t-nngk/qmail7.html~
**QVAdmin
qmail + qmail-vidaの環境のアカウント設定ツールだそうです。
http://software.my-highway.net/cgi/pukiwiki/pukiwiki.php?QVAdmin~
う~んダウンロードできん...
** チェック
メールサーバを構築したら、必ずチェックしておきましょう。
-http://www.rbl.jp/svcheck.php~
第三者中継の可能性をチェックしれくれます。
-http://www.rbl.jp/ckdb/~
ブラックリストに登録されているかどうかを調べます。
-http://www.abuse.net/relay.html~
-http://www.nanet.co.jp/rlytest/relaytest.html~
ページがなくなっちゃいました。
-http://ordb.org/~
ページがなくなっちゃいました。
** queue-fix
/var/log/maillogに
warning: trouble opening remote
といったエラーが出力されている場合は、queueがおかしくなっている可能性があります。http://www.netmeridian.com/e-huss/queue-fix.tar.gzからqueue-fixをダウンロードしましょう。その後解凍して、makeします。エラーが出る場合は、error.hに#include <errno.h>です。qmailを停止して、そのディレクトリで
./queue-fix -i /var/qmail/queue
細かいことはREADMEを読みました。余談ですが、[[本格翻訳 4 Super>http://www.amazon.co.jp/exec/obidos/ASIN/B0006JEEJ8/worried-22]]で翻訳したのですが、いがいと翻訳できておりました。
** Qmail-Scanner
メールを送受信する際にメールのウィルスをチェックしてくれるプログラムです。まず
perl -e 'use DB_File;'
として、エラーが出る場合は、http://www.cpan.org/modules/by-module/TimeからTime-HiRes-1.65.tar.gzをダウンロードします。(1.72がありました。8/6)
perl Makefile.PL
make
make install
またhttp://www.cpan.org/modules/by-module/DB_File/からDB_File-1.810.tar.gzをダウンロードします。
perl Makefile.PL
make
make install
reformineをインストールします。これは振り分けを行います。ではhttp://prdownloads.sourceforge.net/courier/からmaildrop-1.7.0.tar.bz2をダウンロードしました。(2007/4/24 2.0.4)
bzip2 -d maildrop-1.8.1.tar.bz2
tar xvf maildrop-1.8.1.tar
cd maildrop-1.8.1
./configure
2.0.4の場合エラーがでました。configure: error: pcre.h not found - install PCRE from www.pcre.org~
ではhttp://www.pcre.org/より
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.0.tar.gz
tar xzvf pcre-7.0.tar.gz
./configure
make
make install
ではつづき
make
make install
cp ./rfc2045/reformime /usr/local/bin #インストールされているかも
maildropはhttp://www.softclub.co.jp/~zoro/woody/courier/maildrop.htmlや、http://www.is.titech.ac.jp/~yanagis0/text/maildrop.htmlを参考にしてみてください。
次に、TNEFをインストールします。これはms-tnef形式のメッセージをデコードするためのプログラムです。http://sourceforge.net/projects/tnefからTNEF v1.2.3.1をダウンロードしました。(2007/4/24 1.4.3)展開後、
./configure
make install
次はhttp://www.clamav.net/からclamav-0.85.tar.gzをダウンロードします。(0.91 07/7/13)GPLライセンスに従って利用することができるオープンソースのソフトウェアのアンチウィルスソフトです。
groupadd clamav
useradd -g clamav -s /bin/true clamav
./configure
make
make install
uninstallする場合は、
make uninstall
updateの場合は、
/etc/init.d/clamd restart
contrib/init/RedHatにclamdがありますので、これを
/etc/init.dにコピーして、
chkconfig --add clamd
ブート時に立ち上げるようにしておきます。clamdのオプションは{start|stop|status|reload|restart|condrestart}です。
またupdateの場合は、こちらを参照しましょう。http://wiki.clamav.net/index.php/UpgradeInstructions~
clamd socket nameは以前は/tmp/clamdでしたが、0.91から/tmp/clamd.socketに変わりました。
clamav-0.83以上はzlibのバージョンが1.2.1以下だと怒られるので、1.2.2以上にあげておきましょう。clamd -Vでバージョンを確認しておkます。
/usr/local/etc/freshclam.confを開いて
-expampleを#expampleに
-DatabaseMirror db.jp.clamav.netを追加
-LogSyslogの#をとる
次はclamdの設定です。/usr/local/etc/clamd.confを開いて、
-expampleを#expampleに
-LogSyslogの#をとる
-User clamav の#をとってclamavをqscandに(Qmail-Scannerdで使う時)
-ScanArchiveの#をとる 圧縮ファイルも対象
-Debugは、 動作確認が終われば、#に
-ArchiveMaxFileSizeの#をとって10Mぐらいに。これ以上のファイルは走査しない。 0.93では違うんで注意!
-ArchiveMaxRecursionの#をとって10ぐらいに。 何多重までので圧縮をみるか 0.93では違うんで注意!
-ArchiveMaxFilesの#をとって1000ぐらいに。最大何ファイルまで走査するか。 0.93では違うんで注意!
-FixStaleSocketの#をとってyesに clamdが強制終了した場合の再起動不可になるのを防ぐ
http://clamav-jp.sourceforge.jp/jdoc/clamav.html
0.90にアップデートすると、
clamdを起動中: ERROR: Parse error at line 43: Option LogSyslog requires boolean argument.
ERROR: Can't open/parse the config file /usr/local/etc/clamd.conf
http://wiki.clamav.net/Main/UpgradeInstructionsを参考します。とりあえず、あまりclamd.confとfreshclam.confを変更していなかったので、
mv /usr/local/etc/freshclam.conf /usr/local/etc/freshclam.conf8
mv /usr/local/etc/clamd.conf /usr/local/etc/clamd.conf8
として移動してやった後、make installしました。その後でconfを同様に修正してます。
0.90.1にアップデートすると
clamdscan: corrupt or unknown clamd scanner error or memory/resource/perms problem - exit status 32512/127
と出てきました。んー READMEを読むと
** Important note **: please run 'ldconfig' after installing this version.
なんてことだ。READMEを読むのは基本なのに、ついつい忘れていた.. ということで、
ldconfig
変更後、
/usr/local/bin/freshclam -v
でアップデートしておきます。またアップデートログ用のファイルを作成しておきます。
0.93にアップデートしてみました。おっとエラーがでたぞ?
clamd を起動中: ERROR: Parse error at line 285: Unknown option ArchiveMaxRecursion.
ERROR: Can't open/parse the config file /usr/local/etc/clamd.conf
clamd を起動中: ERROR: Parse error at line 290: Unknown option ArchiveMaxFiles.
ERROR: Can't open/parse the config file /usr/local/etc/clamd.conf
clamd を起動中: ERROR: Parse error at line 290: Unknown option ArchiveMaxFiles.
ERROR: Can't open/parse the config file /usr/local/etc/clamd.conf
READMEにも書いてありましたが変更されれてるので、書き換えるか、コメントに。
clamd を起動中: LibClamAV Error: cli_loaddb(): No supported database files found in /usr/local/share/clamav
ERROR: Not supported data format
dbを入れ変えるのを忘れてた。
/usr/local/bin/freshclam --quiet -l /var/log/clam-update.log
これで起動しました。~
2004年5月27日の時点で約21,694種類のウイルスに対応しています。今どのくらいだろ。
さて続きです。
touch /var/log/clam-update.log
chmod 600 /var/log/clam-update.log
chown clamav /var/log/clam-update.log
としてやり、
/usr/local/bin/freshclam --quiet -l /var/log/clam-update.log
をcronに登録しておきます。
0 * * * * /usr/local/bin/freshclam --quiet -l /var/log/clam-update.log
これで1時間ごとにアップデイトされます。
http://www.eicar.org/anti_virus_test_file.htmからテスト用にウィルスをダウンロードしてテストしてみましょう。また
clamscan --infected --remove --recursive パス
でチェックできます。
このユーザはQmail-Scannerをインストールするときにつくるユーザです。
あとqmailにパッチをあてておきましょう。http://www.qmail.org/qmailqueue-patch~
当てようとしましたら、
Reversed (or previously applied) patch detected!
と出力された場合は、netqmailですでにパッチが当たっているからです。
当てたらコンパイルです。make setup checkだけでOKです。./config-fastはしないです。
ではQmail-Scannerのインストールを行います。http://prdownloads.sourceforge.net/qmail-scannerからqmail-scanner-1.24.gzをダウンロードします。(2006/4/24 2.01)展開後、
groupadd qscand
またhttp://www.asahi-net.or.jp/~aa4t-nngk/qmail6.htmlを参考にさせていただいて(大変丁寧に解説していただいてます)、
tar xzvf qmail-scanner-1.25.tgz
cd qmail-scanner-1.25
patch -p1 < ../qmail-scanner-1.25_jp_lsndr.patch
useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand
./configure --lang ja_JP.EUC --redundant yes --notify recips,lsndr,nmladm --scanners clamdscan --install
参考http://qmail-scanner.sourceforge.net/configure-options.php~
うっ、langでエラーが.. しょうがないので、
cd locale
cp -a ja_JP.EUC ja_JP.eucJP
ではもう一度。おっまたエラーだ。
BEGIN failed--compilation aborted at /var/qmail/bin/qmail-scanner-queue.pl line 283.
Jcodeか....[[CPAN]]を参考にいれましょう....
このnotifyは感染通知をだれに送信するかです。none,sender,recips,admin,mnladm,allがあります。senderはどうせ詐称しているアドレスなので、はずしました。
そのあとで、
setuidgid qmaild /var/qmail/bin/qmail-scanner-queue.pl -g
で動く確かめます。だめな場合は、perl-suidperlがインストールされていない可能性がありますので、
which suidperl
としてない場合は、http://rpmfind.net/linux/RPM/からでもインストールしておきましょう。いれたのにもかかわらず、
/usr/bin/perl: symbol lookup error: /usr/bin/perl: undefined symbol: PL_block_type
と出た場合は、たぶんバージョンがひくいかもしれません。yumとか使ってupdateしておきましょう。
yum install perl-suidperl
yum update perl-suidperl
また/var/qmail/bin/qmail-scanner-queue.plをエディタでひらいて、
my $qmailinject = '/var/qmail/bin/qmail-inject';
を
my $qmailinject = '/usr/bin/nkf -j |/var/qmail/bin/qmail-inject';
に変更して文字化けに対応しておきます。また他のオプションで
my $DEBUG='1';
となってますが、qmail-queue.logがどんどん大きくなるので、0にしておきましょう。
次に/var/spool/qmailscan/quarantine-attachments.txtを開いて、最後の方にある、
.vbs 0 VBS files not allowed per Company security policy
とかのコメントをとっておきます。
また適当に追加しておきましょう。
.lnk 0 LNK files not allowed per Company security policy
.scr 0 SCR files not allowed per Company security policy
.wsh 0 WSH files not allowed per Company security policy
.hta 0 HTA files not allowed per Company security policy
.pif 0 PIF files not allowed per Company security policy
.cpl 0 CPL files not allowed per Company security policy
.exe 0 EXE files not allowed per Company security policy
.cmd 0 CMD files not allowed per Company security policy
.dll 0 DLL files not allowed per Company security policy
.js 0 JS files not allowed per Company security policy
.reg 0 reg files not allowed per Company security policy
.wsf 0 WSF files not allowed per Company security policy
.wsc 0 WSC files not allowed per Company security policy
.bat 0 BAT files not allowed per Company security policy
.mdb 0 MDB files not allowed per Company security policy
この0の両端はタブです。追加したら、以下のコマンドを実行です。databaseを再構築です。
setuidgid qmaild /var/qmail/bin/qmail-scanner-queue.pl -g
また/var/spool/qmailscan/quarantine/にウィルスメールがたまってきますので、
find /var/spool/qmailscan/quarantine/ -type f -mtime +10 -exec rm -f '{}' ';'
でcronで消しておきましょう。
次はsmtpの起動スクリプトを修正します。/var/qmail/services/smtpdの先頭にでも、
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
を付け加え、
exec /usr/local/bin/softlimit -m 15000000 /usr/local/bin/tcpserver \
-R -H -v -u "$QMAILDUID" -g "$NOFILESGID" -x \
/home/vpopmail/etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
に修正します。参考:softlimithttp://www.emaillab.org/djb/tools/daemontools/softlimit.html~
ではqmailを起動してみます。起動後、qmail-scanner-1.24/contribで
./test_installation.sh -doit
mail-inject: fatal: qq temporary problem (#4.3.0)
するとエラーがでました。これはperl-suidperlがなかったために出ているようでした。他にもclamdが動いてない場合とか...~
ここでひっかかったウィルスは/var/qmail/bin/qmail-scanner-queue.plの$scandirに記述してあるディレクトリのquarantine/にあるので、適当にけしておきましょう。
Disallowed characters found in MIME headers
と表示されまた場合は、/var/qmail/bin/qmail-scanner-queue.plの
my $BAD_MIME_CHECKS='1';
を
my $BAD_MIME_CHECKS='0';
と修正してみてください。これはポリシーの問題ですが。
あとは、my @local_domains_arrayにドメインを追加しておきましょう。これで通知されるはずです。
*** リンク
http://www.qmail.org/qmailqueue-patch~
http://prdownloads.sourceforge.net/qmail-scanner/~
[[アンチウィルス(大変お世話になりました)>http://www.asahi-net.or.jp/~aa4t-nngk/qmail5.html]]~
[[メールサーバで行うウイルス対策>http://www.atmarkit.co.jp/flinux/rensai/qmail08/qmail08a.html]]~
[[メールサーバでのウイルススキャン -qmail編- >http://www.itmedia.co.jp/help/howto/security/special6/]]~
[[ClamAVのページ>http://clamav-jp.sourceforge.jp/]]~
http://www.kuri3.net/pukiwiki/index.php?SecureMail#qmail_scanner~
http://qmail-scanner.sourceforge.net/FAQ.php~
http://www.fkimura.com/qmail0.html~
[[ORDB FAQ>http://ordb.org/faq/#usage~]]
** SpamAssassin
まずhttp://www.procmail.org/よりprocmail version 3.22をダウンロードします。procmailはメールの振り分けを行うソフトです。maildropを使う場合はいりません。
tar xzvf procmail-3.22.tar.gz
MakefileのBASENAMEでインストール先を指定できます。
BASENAME = /usr/local
では続けます。
make
make install-suid
またいくつかPerlモジュールを入れておきます。
perl -MCPAN -e shell
install Digest::SHA1
install HTML::Tagset
install HTML::Parser
insall Storable
install Net::DNS
(参考 install HTML::Parser DB_File Net::DNS BerkeleyDB Net::SMTP Mail::SPF::Query IP::Country::Fast )
ではhttp://spamassassin.apache.org/より、3.0.4をダウンロードしました。(2006/4/26 3.1.8)
tar xzvf Mail-SpamAssassin-3.0.4.tar.gz
cd Mail-SpamAssassin-3.0.4
perl Makefile.PL PREFIX=/usr/local
check network rulesをyにしてそれ以外は、すべてリターンでいきました。
make
make install
うまくいっているかテストしてみましょう。
spamassassin -t < sample-nonspam.txt
spamassassin -t < sample-spam.txt
/usr/local/bin/にインストールされたspamdとspamcはバイナリでspamdがデーモンで常駐し、spamcが利用するということになります。
cp spamd/redhat-rc-script.sh /etc/init.d/spamd
chmod 700 /etc/rc.d/init.d/spamd
cd /etc/init.d/
chkconfig --add spamd
次にコピーしたspamdのSPAMDOPTIONSを
"-d -m5 -v -u vpopmail"
にしておきます。 vpopmailを使う為です。また
if [ -f /etc/sysconfig/spamassassin ] ; then
. /etc/sysconfig/spamassassin
fi
をコメントにしておきました。また
daemon $NICELEVEL spamd $SPAMDOPTIONS -r $SPAMD_PID
を
daemon $NICELEVEL /usr/local/bin/spamd $SPAMDOPTIONS -r $SPAMD_PID
にしてます。テストしているときにとても遅いと思っていたのですが、古いバージョンが/usr/binにおり、そちらで動いていたので、フルパスにしてます。
spamdのオプションはhttp://spamassassin.apache.org/full/3.0.x/dist/doc/spamd.htmlを参照しましょう。
次に/etc/mail/spamassassin/local.cfを[[TLEC - 個人ユーザ用SPAM避けspamassassin のユーザ定義ファイル>http://tlec.linux.or.jp/docs/user_prefs]]([[SpamAssassin を fetchmail から利用する方法>http://tlec.linux.or.jp/docs/spamassassin.html]])で置き換えておきます。~
スコアはlocal.cfの
required_score 13.0
で設定しておきます。~
ではmaildropでの方法です。
/etc/mailfilterを作成します。
if ( $SIZE < 500000 )
{
exception {
xfilter "/usr/local/bin/spamc -f -u $EXT@$HOST"
}
}
to "./Maildir/"
その後、権限の変更をします。
chown vpopmail:vchkpw /etc/mailfilter
chmod 600 /etc/mailfilter
では振り分けをしたいユーザのディレクトリ(/home/vpopmail/domain/hogedom/hogeuser)に.qmailファイルを作成します。
| /var/qmail/bin/preline /usr/local/bin/maildrop /etc/mailfilter
後はspamdを起動させて、確認しましょう。
/etc/init.d/spamd start
spamと判断されたメールを振り分けるには/home/vpopmail/domains/hogedom/hogeuser/Maildirに.spamをvpopmailユーザで作成しておきます。
cd /home/vpopmail/domains/hogedom/hogeuser
maildirmake -f spam ./Maildir
/etc/mailfilterを修正します。 うまくいかない... 調査中→どうも if (...) {って書いちゃだめで、{しかない行をつくらないといけないようでした。
参考:http://www.is.titech.ac.jp/~yanagis0/text/maildrop.html ありがとうございます。
if ( $SIZE < 500000 )
{
exception {
xfilter "/usr/local/bin/spamc -f -u $EXT@$HOST"
}
}
if (/^X-Spam-Flag: *YES/)
{
to "./Maildir/.spam/"
}
else
{
to "./Maildir/"
}
procmailの場合は、
振り分けをしたいユーザのディレクトリ(/home/vpopmail/domain/hogedom/hogeuser)に.qmailファイルを作成します。
| /usr/bin/procmail -m ./.procmailrc
次に.procmailrcを作ります。
PATH=/usr/bin:/bin:/usr/local/bin
HOME=/home/vpopmail/domains/hogedom/hogeuser
MAILDIR=$HOME/Maildir
DEFAULT=$HOME/Maildir/
LOGFILE=/var/log/procmail/hogeuser.log
LOCKFILE=$MAILDIR/procmail.lock
:0fw:
* < 600000
| /usr/local/bin/spamc
:0:
* ^X-Spam-Status:.Yes
$HOME/Maildir/.spam/
LOCKFILEまではいいとして、:0 はひとつの判定条件の始まりを示します。次の:0もしくはEOFまででひとつの判定条件です。次の*は条件文になります。^は行頭と意味しますので、X-Spam-Status:.Yesがあれば、$HOME/Maildir/.spam/に移動しなさいという意味になります。
また$HOME/Maildir/.spam/を! hoge@hogehoge.jpとしておけば転送されますので、spam用のアカウントに飛ばしてもいいでしょう。~
さてspam以外のメールを別のところに転送したい場合はどう書こうか...~
PATH=/usr/bin:/bin:/usr/local/bin
HOME=/home/vpopmail/domains/hogedom/hogeuser
MAILDIR=$HOME/Maildir
DEFAULT=$HOME/Maildir/
LOGFILE=/var/log/procmail/spam.log
LOCKFILE=$MAILDIR/procmail.lock
:0fw:
* < 600000
| /usr/local/bin/spamc
:0:
* ^X-Spam-Status:.Yes
! spam@hoge.jp
:0c:
* ^X-Spam-Status:.No
! keitai@hoge.jp
としておけば、スパムと判定されたメールはspam@hoge.jpに飛び、判定されなかったやつはkeitai@hoge.jpに飛びます。
また:0cとしているので、コピーが残りますので、両方で受けれます。
~
ではテストしてみましょう
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
を含むメールをおくってみるとspamと判定されればOKです。
内容は、[[Tests Performed>http://spamassassin.apache.org/tests_3_2_x.html]]を参照しましょう。~
sa-updateとすると
Can't locate Archive/Tar.pm in @INC (@INC contains:...
とでたので、
perl -MCPAN -e shell
Archive::Tar.pm
として入れておきました。/var/lib/spamassassin/3.002004にダウンロードされてます。~
参考:http://spamassassin.jp/modules/xhnewbb/viewtopic.php?topic_id=14
では学習もさせましょう。いろいろとspamと判定されているものやすりぬけたものを仮に/home/hoge/Maildir/curに集めておいて、
/usr/bin/sa-learn --spam /home/hoge/Maildir/cur
とすると、学習してくれるのですが、
plugin: failed to parse plugin (from @INC): Can't locate Mail/SpamAssassin/Plugin/Check.pm in @INC
plugin: failed to parse plugin (from @INC): Can't locate Mail/SpamAssassin/Plugin/HTTPSMismatch.pm
plugin: failed to parse plugin (from @INC): Can't locate Mail/SpamAssassin/Plugin/URIDetail.pm
とかいろいろエラーがでちゃいましたので、
perl -MCPAN -e shell
install Mail::SpamAssassin::Plugin::Check
とかしていれてやりました。
spamと判断されたくない場合は、local.cfに
whitelist_from *hoge.co.jp
whitelist_from test@hoge.co.jp
whitelist_*@hoge.co.jp
とか追加しておきます。
実行すると、
netset: cannot include 127.0.0.1/8 as it has already been included
ってなメッセージがでました。
http://www.global-domination.org/forum/viewtopic.php?p=3528を参考にしてみよっと。
***TVD_SPACE_RATIO
なんかこれでよくスコアが上がってる。文章にどの割合で空白文字が入っているかみたいなんだけど、日本語じゃないから
そこまでシビアにみないでもいい気がする。てことで、
user_prefsに
score TVD_SPACE_RATIO 0
を追記した。
***リンク
[[Procmail の紹介とレシピの書き方>http://www.jaist.ac.jp/~fjt/procmail.html]] 大変わかりやすくレシピの書き方を紹介されてます。~
[[PROCMAIL>http://www.linux.or.jp/JM/html/procmail/man1/procmail.1.html]] エラーメッセージ等大変参考になりました。~
[[スパムアサシン(spamassassin)の設定メモ>http://staff.miyakyo-u.ac.jp/~m-taira/Lecture/spamassassin.html]] いい加減なメモとありましたが、大変助かりました。~
[[SpamAssassin で spam メールの排除>http://www.freewheelburning.com/linux/spamassassin.html]] procmailからSpamAssassinまで丁寧に解説されておられます。spam メールのサンプルとかありました。~
[[作業メモ>http://www.i-ml.jp/cgi-bin/bbs/memo.cgi?sch=%5B43%5D]] spamassassin+vpopmail+procmailで自動振り分けの紹介です。~
[[作業メモ>http://www.i-ml.jp/cgi-bin/bbs/memo.cgi?sch=%5B44%5D]] spamassassin メモ~
[[oheso.cfg>http://somin.oheso.com/oheso.cfg/archives/2005/01/easpamassassino.html]] SpamAssassinのインストールについていかかれています。~
http://search.cpan.org/src/FELICITY/Mail-SpamAssassin-2.62/spamd/README.spamd-vpopmail vpopmailでSpamAssassinを使う方法が書かれています。~
http://search.cpan.org/src/FELICITY/Mail-SpamAssassin-3.1.8/spamd/README.vpopmail こちらは3.18用です。
[[Debian GNU/Linux>http://www.unix-power.jp/linux/qmail-scanner.html]] バーチャルドメインSPAM設定が大変ためになりました。~
[[blogのようなもの>http://www.b-dash.net/weblog/tanikin/archives/000022.html]] 大変参考にさせていただいているサイトです。~
[[サーバー構築 はまりメモ>http://www.elemsoft.com/tech/server/courier-spam.html]] Courier Mail Server + maildrop + spamassassinがわかりやすく紹介されておられます。~
[[SpamAssassin によるスパムメール対策>http://linux.kororo.jp/cont/server/spamassassin.php]] とても丁寧な解説があります。~
** vqadmin
vqadminはWebからドメイン管理を行うためのツールです。アカウントの追加等も可能です。ではhttp://www.inter7.com/index.php?page=vqadminからダウンロードします。
vqadmin-2.3.2.tar.gzを落としました。
tar xzvf vqadmin-2.3.2.tar.gz
./configure --enable-cgibindir=/usr/local/apache/cgi-bin
make
make install-strip
ではhttpd.confに
ScriptAlias /cgi-bin/vqadmin/ "/usr/local/apache/cgi-bin/vqadmin/"
<Directory "/usr/local/apache/cgi-bin/vqadmin">
Deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow
</Directory>
としてやります。次に/usr/local/apache/cgi-bin/vqadminにある、.haccessを見てみます。これで、vqadmin.passwdとあるはずですので、パスワードファイルを作成します。
/usr/local/apache/bin/htpasswd -bc vqadmin.passwd admin passwd
では、http://www.test.com/cgi-bin/vqadmin/vqadmin.cgiで表示されればOKです。
ただし、このとき/cgi-bin以外に入れた場合は、/cgi-bin/vqadmin/htmlにあるhtmlを直しましょう。
** SqWebMail
Maildir形式に対応した、Webサーバ経由のメーラーです。ではhttp://www.tom.comm.waseda.ac.jp/~ichi/sqwebmail/japan/からsqwebmail-3.3.7-p1.japan.1.4.tar.gzをダウンロードします。
./configure --enable-mimecharset=iso-2022-jp --enable-cgibindir=/test/cgi-bin/ \
--enable-imagedir=/etc/images/sqwebmail \
--enable-imageurl=/images/sqwebmail --disable-authpwd --enable-authvchkpw
make
make install-strip
make install-configure
-enable-mimecharset=iso-2022-jp 日本語
-enable-cgibindir=/test/cgi-bin SqWebMailcgiのインストール先
-enable-imagedir=/etc/images/sqwebmail イメージのディレクトリを指定
-enable-imageurl=/image/sqwebmail イメージのディレクトリのURL
-disable-authpwd vpopmailを使っているので、/etc/passwd認証は使いません。
-enable-authvchkpw vpopmailのvchkpw認証を使います。
/usr/local/share/sqwebmail/にインストールされてます。/usr/local/share/sqwebmail/authdaemonrcのauthmodulelistは
authmodulelist="authvchkpw"
にしておきます。
ではcronにキャッシュをクリアする設定を追加しておき、毎日5時にcacheを掃除します。
0 5 * * * /usr/local/share/sqwebmail/cleancache.pl
また承認用モジュールを起動します。
/usr/local/share/sqwebmail/libexec/authlib/authdaemond start
これは/etc/rc.d/rc.localにでも記述しておきましょう。
ではブラウザから起動してみましょう。http://www.test.com/cgi-bin/sqwebmail
送信できん........ いろいろと調べていると、/usr/local/share/sqwebmailにあるsendit.shの中に
exec /usr/sbin/sendmail -oi -t -f "$1"
とあったんですが、これを
exec /var/qmail/bin/qmail-inject -f "$1"
に変更しておきましょう。
/var/log/messagesをみていると
sqwebmail: maildircache: Cache create failure - unable to create /var/cache/sqwebmail/153390/so/xxx@yyy.zzz.authdaemon.sate
と出力していました。この場合、ls -laで/var/cache/の権限を確認してください。
添付ファイルが大きいとき
Attachment size exceeds limit set by system administrator
とエラーが表示されます。
--with-maxmsgsize=20000000
--with-maxformargsize=20000000
--with-maxargsize=20000000
とかコンパイル時に指定しないとだめっぽいです。2MがMAX?
http://qmailsolutions.com/webmailer/sqwebmail.html~
http://www.tom.comm.waseda.ac.jp/~ichi/sqwebmail/~
** IlohaMail
WebMailです。http://blog.ilohamail.org/よりダウンロードしまいた。
wget http://download.ilohamail.org/files/IlohaMail-0.8.14-rc3.tar.gz
後はwebrootにコピーしたらOKです。もしくはaliasで。なぜか添付がうまくいかないー あれ?うまくいってる?なぜだ?しかしセットアップは楽です。別にMySQLを使わなくても動きますので、お手軽にはじめたいときはいいです。初期画面のデフォルトはIlohaMail\conf\login.phpで変更します。あら?添付ファイルをつけたメッセージをIlohaMailから送ってIlohaMailで見てみると添付としてでなくて、そのままみれてしまいます。ん?メールヘッダを見てみると、Content-Typeが2つくっついてますね。
Content-Type:multipart/mixed; boundary=・・・・・・
Content-Type:text/plain;・・・・・・
どうもこの最後のContent-Type:text/plain;をみてテキストと判断しているようです。これは送信時に問題がありそうです。source/compose2.phpの605行目からみていきますと、
if (!empty($SMTP_SERVER)){
とありますが、この$SMTP_SERVERは、conf/conf.phpの$SMTP_SERVERの値です。ここに値が設定されているかどうかで、smtp_mailかmailのどちらかをつかうか変わります。こめんとにも
smtp_mail //send thru SMTP server using cusotm SMTP library
mail //send using PHP's mail() function
とありました。このmailがヘッダの最後にContent-Type:text/plainをつけているようでしたので、$SMTP_SERVERを設定してやるとちゃんと見れました。
ん?utf-8のメールが化けているな。lang/common.incのfunction LangDecodeMimeString($str, $charset){
に
//return utf8ToUnicodeEntities($rest);
return mb_convert_encoding($rest,$charset,"AUTO");
とすると件名は化けなくなった。まだボディが化けてるな。
include/read_message_print.incの
/* run through character encoding engine */
echo "\n<!-- converting from $charset to $my_charset //-->\n";
$body=LangConvert($body, $my_charset, $charset);
を
echo "\n<!-- converting from $charset to $my_charset //-->\n";
$body=mb_convert_encoding($body,$my_charset,"AUTO");
//$body=LangConvert($body, $my_charset, $charset);
にして、
if (!$html_encoded){
if ($is_unicode) $line = utf8ToUnicodeEntities($line);
else $line = encodeUTFSafeHTML($line);
}
を
if (!$html_encoded){
if ($is_unicode) $line = encodeUTFSafeHTML($line); //utf8ToUnicodeEntities($line);
else $line = encodeUTFSafeHTML($line);
}
にするととりあえず表示されましたが、かなり抜本的な解決ではないです。
http://fkimura.com/ilohamail0.html
** qmHandle
qmHandleはqmail-qstat、qmail-qreadプラス、キューの削除も行えます。
http://qmhandle.sourceforge.net/からqmhandle 1.2.0 をダウンロードしました。
mkdir /var/qmail/qmHandle
cd /var/qmail/qmHandle
tar xvfz qmHandle*
ln -s /var/qmail/qmHandle/qmHandle /usr/bin/qmhandle
ではqmhandleを起動してます。オプションは以下のとおりです。
-a 再送
-l ローカル/リモートすべてのキューを表示
-L ローカルキューを表示
-R リモートキューを表示
-s 統計情報の表示
-mN Message-Id Nのメッセージを表示
-dN Message-Id Nのキューを削除
-D ローカル/リモートすべてのキューを削除
-c 出力結果をカラー表示
-N Message-Idを表示。ただし、-l、-L、-Rオプションと一緒に指定する必要がある
また[[Kawa.netxp queue-fast.pl - qmail のメールキューの閲覧・削除>http://www.kawa.net/works/qmail/queue-fast.html]]に
指定アドレス宛のキューの削除等公開されており、大変参考にさせていただいております。~
** qmailanalog
http://cr.yp.to/software/qmailanalog-0.70.tar.gzからダウンロードして、展開してコンパイルです。
tar xzvf qmailanalog-0.70.tar.gz
cd qmailanalog-0.70
make
エラーがでました。その場合は、error.hを修正します。extern int errno;の下に#include <errno.h>を追加して、
make
make setup check
これで/usr/local/qmailanalog/にインストールされてます。binにmatchupってあるとおもいますが、これが整形をしてくれます。またzやxで始まるスクリプトが解析をおこないます。では実行してみます。sploggerの場合です。
#!/bin/sh
#
PATH=/usr/local/qmailanalog/bin:/var/qmail/bin:$PATH
MAILLOG="/var/log/maillog"
QMAILLOG="/var/tmp/qmail.$$"
MAILTO=mailto@hoge
MAILFROM=mailfrom@hoge
/usr/bin/awk '{$1="";$2="";$3="";$4="";$5="";print}' < $MAILLOG | matchup > $QMAILLOG
(echo "To: $MAILTO"
echo "From: $MAILFROM"
echo "Subject: maillog"
echo ""
zoverall < $QMAILLOG
zfailures < $QMAILLOG
zdeferrals < $QMAILLOG
zrecipients < $QMAILLOG
zsenders < $QMAILLOG )| qmail-inject -f $MAILFROM
/bin/rm -f $QMAILLOG
これでメールがくればとりあえずOKです。よければ[[cron>Linux TIPS]]に登録しておきましょう。ちなみに
zoverall <--基本的な統計
zfailures <--失敗統計
zdeferrals <--延期統計
zrecipients <--受信者統計
zsenders <--送信者統計
http://www.atmarkit.co.jp/flinux/rensai/qmail10/qmail10a.html~
http://www.emaillab.org/djb/qmailanalog/qmailanalog.html~
** メーリングリストmailman
mailmanというソフトをインストールします。http://www.list.org/download.htmlからmailman-2.1.5.gzをダウンロードしました。またhttp://mm.tkikuchi.net/からMailman-2.1.5 ジャンボ修正パッチもダウンロードしました。このmailmanはpython2.1以降が必要であるとのことなので、インストールされているか確かめましょう。またpythonにはhttp://www.python.jp/Zope/downloadからJapaneseCodecsもいれておきましょう。
mailmanを解凍して、そのディレクトリで
patch -p0 < /work/mailman-2.1.5+patch.20040901.gz
としました。ではmailman用のユーザをつくります。
useradd -d /home/mailman mailman
groupadd mailman
chgrp mailman /home/mailman
chmod a+rx,g+ws /home/mailman
http://nav.bandersnatch.org/clues/qmail-vpopmail-mailman.html
http://www.python.jp/Zope/download
** メーリングリストfml
fmlというソフトを使います。http://www.fml.org/software/fml/index.htmlのhttp://www.fml.org/software/fml/download.htmlから、fml-4.0-stable-20040215.zipをダウンロードしました。
http://www.fml.org/software/fml/INSTALL/index.htmlを参考にインストールしてきます。
groupadd fml
useradd -g fml fml
mkdir /usr/local/fml
chown fml:fml /usr/local/fml
su - fml
mkdir /home/fml/ml
perl makefml install
インストールが始まります。このとき
TOP LEVEL ML DIRECTORY [/var/spool/ml] /home/fml/ml
以外はリターンでいきました。バーチャルドメインは、
DOMAIN NAME virtualdomain.com
FQDN virtualdomain.com
EXEC FILES DIRECTORY /home/vpopmail/domains/virtualdomain.com/fml
TOP LEVEL ML DIRECTORY /home/vpopmail/domains/virtualdomain.com/ml
後はyでリターン
chown -R vpopmail.vchkpw /home/vpopmail/domains/virtualdomain.com/fml
chown -R vpopmail.vchkpw /home/vpopmail/domains/virtualdomain.com/ml
メーリングリストをつくります。makefmlでヘルプが出るので参考にしてください。
cd /home/vpopmail/domains/virtualdomain.com/fml
makefml newml test
cd /home/vpopmail/domains/virtualdomain.com
ln -s /home/vpopmail/domains/virtualdomain.com/ml/etc/qmail/alias/.qmail* /home/vpopmail/domains/virtualdomain.com
次に/home/vpopmail/domains/virtualdomain.com/ml/etc/qmail/alias/で.qmail-test-admin、.qmail-test-requestのアドレスを編集します。また/var/qmail/users/assignも編集します。
+virtualdomain.com-test:vpopmail:1089:1089:/home/vpopmail/domains/virtualdomain.com/ml/etc/qmail/alias:-:test:
編集後、qmail-newuでcdbを更新します。ユーザの追加は/home/vpopmail/domains/virtualdomain.com/fmlで
makefml add ML addr add <addr> to <ML>
WEBで操作したい場合は、
makefml admin.cgi config
CGIの設定
/usr/local/fml/makefml admin.cgi config
/usr/local/fml/makefml newml test
***リンク
http://www.kt.rim.or.jp/~atsato/ml/basic/software.html~
http://www.hitsuji.gr.jp/yms/yuzo/linux/fml.html~
http://www.omake-world.com/~fsting/inst_memo/fml.html~
http://eshima.net/main/linux_tips.php?ttl=mailserver~
http://ww7.tiki.ne.jp/~kusa/memo/fml.html~
http://r286.com/arc/352~
http://www.sapporo.iij.ad.jp/staff/fukachan/fml/menu.html
** 自動応答
自動応答のためのツールをインストールします。
wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
tar xzvf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5
make
make install
日本語で応答したい場合は、
autorespond.cの265行目に
fprintf(fdm,"Content-Type: text/plain; charset=\"ISO-2022-JP\"\n" );
です。通常は、.qmailに設定を書いておけばいいのですが、vpopmailを使用している場合は、
/home/vpopmail/domains/test.com/.qmail-hoge
というファイルを作成し、
| autorespond 1 10 hoge/autorespond.msg hoge/autorespond_log
といった行を追加しておきます。autorespond.msgはメッセージの中身です。autorespond_logはディレクトリです。実はこのファイルに|以下に実行ファイルを書いておけばそのファイルが実行されるのです。1は受付時間(単位:秒)で10は指定された時間以内に受け付けるメールの最大数です。
***リンク
http://www-komo.ise.eng.osaka-u.ac.jp/~kaneta/unix/misc.html~
http://www.system-act.com/mail/autorespond.html~
http://www.atmarkit.co.jp/flinux/rensai/qmail07/qmail07b.html~
** qmailadmin
WEB上からユーザアカウントが作成できるツールです。http://www.inter7.com/index.php?page=qmailadminからqmailadmin-1.2.0.tar.gzをダウンロードしましした。また必要なソフトもダウンロードしました。
autorespond -> http://www.inter7.com/index.php?page=developmentからautorespond-2.0.5.tar.gz
ezmlm or ezmlm-idx -> http://www.inter7.com/index.php?page=softwareからezmlm-0.53-idx-0.41.tar.gz
ではインストールです。
tar zxvf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5
make
make install
これで/usr/binにautorespondがあるはずです。そのまま実行すると、
autorespond: usage: time num message dir [ flag arsender]
と表示されます。
time:メッセージ(数秒の)を考慮する時間
num:時間セカンドの中で許すメッセージの最大値
message:送るメッセージのファイル名
dir:ログを作成するディレクトリ
flag(送信されてきたメッセージの扱い方)
0:なにもしない。
1:応答メッセージに添付(デフォルト指定)
arsender(応答メッセージ中の差出人)
+:Fromを空にする
$:送られてきたメッセージ中の「To:」を使用
次にezmlmです。
tar xzvf ezmlm-0.53-idx-0.41.tar.gz
cd ezmlm-0.53-idx-0.41
make
make man
cp -f ezmlmrc.jp ezmlmrc
make setup
これで/usr/local/bin/ezmlmにインストールされました。ではqmailadminです。
tar xzvf qmailadmin-1.2.0.tar.gz
./configure \
--enable-htmldir=/webroot/qmailadmin/html \
--enable-imagedir=/webroot/qmailadmin/html/images \
--enable-imageurl=/qmailadmin/html/images \
--with-htmllibdir=/usr/local/share \
--enable-cgibindir=/webroot/qmailadmin/cgi-bin \
--enable-cgipath=/qmailadmin/cgi-bin/qmailadmin \
--enable-autoresponder-bin=/usr/bin \
--enable-ezmlmdir=/usr/local/bin/ezmlm/ \
--enable-ezmlm-mysql=n
make
make install
ここで
--enable-modify-spam \
--enable-spam-command="|/var/qmail/bin/preline /usr/local/bin/maildrop /home/vpopmail/etc/mailfilter"
を追加し、mailfilterを以下の内容で作成しておけば、spamassassinが振り分けしてくれるようなのですが、検証はしてません。
SHELL="/bin/sh"
import EXT
import HOST
VPOP="| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox"
VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`
logfile "mailfilter.log"
if ( $VHOME eq "" )
{
log "========"
log "ERROR: VHOME isn't set!"
to "$VPOP"
}
else
{
if ( $SIZE < 262144 )
{
exception {
xfilter "/usr/bin/spamc -f -u $EXT@$HOST"
}
}
if (/^X-Spam-Flag: *YES/)
{
exception {
include $VHOME/Maildir/.mailfilter
}
`test -d $VHOME/Maildir/.Spam`
if( $RETURNCODE == 1)
{
`/usr/local/bin/maildirmake -f Spam $VHOME/Maildir`
}
exception {
to "$VHOME/Maildir/.Spam/"
}
}
exception {
include $VHOME/Maildir/.mailfilter
}
# default delivery
exception {
to "$VHOME/Maildir/"
}
}
spamassasinで
ではqmailadmin/cgi-binの.htaccessに
SetHandler cgi-script
Options +ExecCGI
として、http://hoge.com/qmailadmin/cgi-bin/qmailadminにアクセスしてみます。
***リンク
http://qmailsolutions.com/webifs/qmailadmin.html#autorespond~
http://www.atmarkit.co.jp/flinux/rensai/qmail07/qmail07b.html~
**Outbound Port25 Blocking
ISPの送信用メールサーバを利用しないメール送信を制限するものだそうです。こちらにわかりやすく書いてあります。http://bb.watch.impress.co.jp/cda/bbword/8764.html~
とりあえず、qmail-smtpd-authを使って、submission port(587)に対応させていてる。あとは DomainKeysの設定だ。SenderIDってのもある。 [[ネットワークセキュリティ Expert 2 Software Design>http://www.amazon.co.jp/exec/obidos/ASIN/4774123935/worried-22]]の第3特集に概要があります。またオープンソースマガジン20062号にSPF,SenderID,DKIMの記事があります。
とりあえずの場合は、
iptables -A PREROUTING -p tcp -m tcp --dport 587 -j REDIRECT --to-ports 25
で587を25に転送しておいてもいいのですが、当然smtp authではありません。
**SPF
DNSのTXTに
hoge.com. IN TXT "v=spf1 +ip4:1.2.3.4 ~all"
設定したら、check-auth@verifier.port25.comにメールを送って確認。passと返ってくればOK
[[Sender ID:送信者側の設定作業>http://www.atmarkit.co.jp/fsecurity/special/82senderid/sender103.html]]~
[[Sender ID:受信者側の設定作業>http://www.atmarkit.co.jp/fsecurity/special/87senderid/sender201.html]]~
spfのパッチを適用している場合は、
echo 1 > /var/qmail/control/spfbehavior
# 0: Never do SPF lookups, don t create Received-SPF headers
# 1: Only create Received-SPF headers, never block
# 2: Use temporary errors when you have DNS lookup problems
# 3: Reject mails when SPF resolves to fail (deny)
# 4: Reject mails when SPF resolves to softfail
# 5: Reject mails when SPF resolves to neutral
# 6: Reject mails when SPF does not resolve to pass
これは未調査
http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/~
http://www.atmarkit.co.jp/fsecurity/special/82senderid/sender103.html~
http://blog.livedoor.jp/dankogai/archives/50809900.html~
** TIPS
***sendmailの入れ替え
mv /usr/sbin/sendmail /usr/sbin/sendmail.org
mv /usr/lib/sendmail /usr/lib/sendmail.org
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
***メール受信後にコマンドを実行したい(dot-qmail)
.qmail-hogeファイルを作り、
| /hoge.sh
[[届いたメールの料理の仕方 (1) ~qmail編~ >http://dsas.blog.klab.org/archives/50524479.html]]~
[[届いたメールの料理の仕方 (2) ~qmail編~ >http://dsas.blog.klab.org/archives/50524481.html]]~
***Sorry, I couldn't find any host test.com. (#5.1.2)
ホストがみつからなかったときのメッセージです。またDNSのMXを確認してください。
***ローカルのユーザに送れない。
localsにlocalhostだけが記述されており、自ホストの記述がない場合にでました。
Sorry._Although_I’m_listed_as_a_best_preference_MX_or_A_for_that_hostが出力されていたので調べたらこれが原因でした。
***キューの状態を表示する。
/var/qmail/bin/qmail-qstat
***たまっているメッセージキューのヘッダ情報を表示する
/var/qmail/bin/qmail-qread
***キューにとどまる期間を指定したい
/var/qmail/control/にqueuelifetimeというファイルを作成して、その中に秒を指定すればいいそうです。
デフォルトでは60万4800秒(1週間)みたいです。
http://www.atmarkit.co.jp/flinux/rensai/qmail14/qmail14b.htmlを参照させていただきました。
***受信メールサイズの制限
/var/qmail/control/にdatabytesというファイルを作成して、その中にサイズを指定すればいいそうです。
echo "31457280" > /var/qmail/control/databytes
で30Mbyte(30*1024*1024)に制限~
参考:http://www.atmarkit.co.jp/flinux/rensai/qmail03/qmail03a.html
***配送試行間隔について
[[メールサーバーってどういう感じで再試行をしているのかな>http://www.ayamizu.com/mail_retry.htm]]を参考にさせていただきました。
***メール転送
vpopmailの場合ですが、/home/vpopmail/domains/test.com/hogeというようにtest.comにhogeとユーザが作られているとします。この場合、
/home/vpopmail/domains/test.com/.qmail-hoge
といったファイルを作成し、
hoge2@tensou.com
/home/vpopmail/domain/test.com/hoge/Maildir/
とします。1行目が転送したいメールアドレス、2行目は元に残しておきたい場合に記述しておきます。
***1ユーザで容量に制限をかけたい
http://www.pgregg.com/projects/qmail/mailquotacheck/にmailquotacheck.shというシェルスクリプトがあります。これを.qmail-hogeに
|mailquotacheck
./Maildir/
と記述します。またmailquotacheckにquota=3000とか設定されていますので、これを変更しましょう。これはByteです。
***docomoからきたメールに返信するとUnknown userとなる
http://www.hatena.ne.jp/1090241991
***特定のアドレスを拒否したい
/var/qmail/control/badmailfromに
spam@spam.com
@spam.com
とか書きます。
***特定の相手からメールが届かない
よく原因はわかりませんが、MTUを見直してみましょう。
ping -f -l 1424 hoge.com
で
Packet needs to be fragmented but DF set.
が表示されないところでまで1424を下げていき、その値で、MTUはICMPヘッダ(8バイト)とIPヘッダ(20バイト)が含まれてますので、
ifconfig eth0 mtu 1452
セットします。
***ダブルクォートがメールアドレスに付加される。
@の前にドットが有る場合、そのアドレスにダブルクォートが付加されるので、注意する。
http://sonic64.com/cat_qmail.html
***clamdscan: corrupt or unknown clamd scanner error or memory/resource/perms problem - exit status 512/2
メールが送れないので、/var/log/maillogを参照すると、このようなエラーがでてました。こりゃ困ったと思いながら、
clamdを再起動しても、どうも動いていないようです。/var/log/messageを見ると
Apr 1 10:00:00 hoge clamd[7063]: Socket file /tmp/clamd exists. Either remove it, or configure a different one.
Apr 1 10:00:00 hoge clamd: clamd停止 failed
どうも、うまくclamが終了してなくて、/tmp/clamdファイルが残っていたようです。消して再起動すると、うまくいきました。
***メールアドレスで使用できない文字
[[メールアドレスで使用できない文字の種類がわかるサイトを教えてください。>http://q.hatena.ne.jp/1133015187]]~
***グリーティング・メッセージを変更したい
/var/qmail/control/smtpgreetingファイルを作成して、
ホスト名 メッセージ
とします。ですので、
host message
みたいにしておきます。~
http://www.atmarkit.co.jp/flinux/rensai/qmail14/qmail14b.html~
***vpopmailでバウンスメールを出さない。(大量宛先不明エラーメール対策)
/home/vpopmail/domains/バーチャルドメイン名/.qmail-default
を開くとデフォルトでは、
/home/vpopmail/bin/vdelivermail ’’bounce-no-mailbox
となっていますが、
/home/vpopmail/bin/vdelivermail ’’delete
にするか
/home/vpopmail/bin/vdelivermail ’’hoge@hoho.com
とかにして宛先を変更します。~
[[vpopmailでのバウンスメールSPAM撃退>http://www.databasebank.com/programmers/frm_detail.php?v_id=2127]]
***Sorry. Although I'm listed as a best-preference MX or A for that host,it isn't in my control/locals file, so I don't treat it as local. (#5.4.6)
はじめはDNS間違えたかな~とか思っていましたが、実は、バーチャルドメインにしてたのに、virtualdomainsを作ってなかったんですね。セカンダリにしてsmtproutesを作っていたりもしたんです。他のことが原因で出ることもありますが、ちょっと焦りました。
***content rejected (in reply to end of DATA command)
んー エラーが帰ってきたんですが、eo.k-opti.ad.jpが特に多い。
http://miniminiadmin.jugem.jp/?day=20070523
***quoted-printable
メーラを作っていたのですが、
=1B$B$
とかで本文が化けているやつがあり、なんじゃこりゃと思いながらヘッダーを調べていると、
Content-Transfer-Encoding: quoted-printable
となってました。
参考:
[[[文字化けすると、こう見える!>http://www003.upp.so-net.ne.jp/hat/imail/xsample.html]]~
http://yougo.ascii24.com/gh/32/003224.html
***なんやねん。Winmail.datって
添付ファイル送ったけど、添付されないことがあるって聞いて調べていたら、送信者はOutlook 2007で、受信者はOutlookExpress。
マイクロのメーラなんてつかわんでほしいなー~
[[Outlook 2007 でメールを送信すると、受信者側に Winmail.dat というファイルが添付される>http://support.microsoft.com/kb/941245/ja]]
** MEMO
smtproutes file
http://www.dbmail.org/
** リンク
[[qmail * djbdns by D. J. Bernstein >http://www.qmail.jp/qmail.html]]~
[[実用qmailサーバ運用・管理術>http://www.atmarkit.co.jp/flinux/index/indexfiles/qmailindex.html]]~
[[SPAMメール徹底対策>http://www.atmarkit.co.jp/flinux/rensai/qmail03/qmail03c.html]]~
[[ログメッセージ>http://www.big.or.jp/~mio/it/it-old/qm/ref/qm_ref_qmail-log_5.html]]
[[FAQ(qmail-1.03)>http://man.qmail.jp/faq/faq.html]]~
[[qmailsolutions.com>http://www.qmailsolutions.com/]]~
[[qmail+vpopmailメモ>http://www.b-dash.net/solaris/vpopmail.html]]~
http://www.qmail.jp/qmail.html~
http://www.dpri.kyoto-u.ac.jp/~dptech/qm_memo/qm_memo.html~
http://www.ryouto.jp/linux/linux_15.html#POS011~
[[FAQ目次-Vpopmail>http://qmail.visionmakers.net/vpopmail/faq.html]]~
[[pukiwiki自宅サーバ構築メモ>http://www.kuri3.net/pukiwiki/]]~
http://www.ghost.jp/memo/freebsd/qmail.html~
http://atmarkit-www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2364&forum=10&11~
http://www.omake-world.com/~fsting/inst_memo/vpopmail.html~
http://tenjin.coara.or.jp/~yano/computer/linux/qmail.html~
http://www.fkimura.com/mailman0.html~
http://mm.tkikuchi.net/pipermail/mmjp-users/2004-March/000779.html~
[[メールアドレスによって自動応答の内容を変える>http://kittz.net/perl/etc/qmail.html]]~
[[Stray Penguin>http://www.asahi-net.or.jp/~aa4t-nngk/qmail2.html]] 非常に丁寧な解説があります。~
[[qmailに届いたメールを、PHPをつかってMySQLに格納したいと思っています。>http://www.hatena.ne.jp/1102135670]]~
[[メールヘッダーについての理解>http://www6.wind.ne.jp/mrfujii/history/14hobbynow/pc-home/mailheader.htm]]~
[[telnetでのメール受信方法>http://ash.jp/net/telnet_pop3.htm]] POP3コマンド一覧~
[[消えない queue の消し方>http://freebsd.sing.ne.jp/FreeBSD/09qmail/]]~
[[qmail にて SMTP 認証を行ってみる>http://network.station.ez-net.jp/server/djb/qmail/smtp-auth.asp]]~
[[qmailの設定方法>http://warp.syns.net/2/2/index.html]]~
[[管理の小技集>http://www.asahi-net.or.jp/~aa4t-nngk/qmail4.html]] メールフィルタの作り方等わかりやすく載ってます。~
[[Linux Page (Server)>http://www.freewheelburning.com/linux/]] セカンダリメールサーバー構築や、 SpamAssassin で spam メールの排除が紹介していただいてます。~
[[qmailメモ>http://www.b-dash.net/weblog/tanikin/archives/cat_qmail.html]] 大変丁寧な解説で参考にさせていただいております。~
[[自作ソフトウエア>http://seclan.dll.jp/dlunix.htm]] qmail 用 .password を用いた smtp-auth/apop 対応パッチ仮想ユーザ対応版を公開されておられます。~
http://www.wikiroom.com/qmail~
[[qmailの設定方法>http://www.syns.net/2/2/]] smtp-auth等丁寧な解説があります。~
[[qmailでIPv6+TLS+SMTP-AUTH+POP3S+IMAPS>http://www.maid.ne.jp/%7Eyy/freebsd/qmail.html]] 非常に参考になります。~
[[qmail-1.03 制御ファイル>http://man.qmail.jp/jman5/qmail-control.html]] qmailの制御ファイルの解説があります。
http://www.takemaru.com/microserver/~
http://linux.fken.ise.osaka-sandai.ac.jp/lu094/94694~
http://www.atmarkit.co.jp/fnetwork/rensai/netpro04/netpro01.html~
[[sendmail を捨て,qmail に乗り換える>http://www.gcd.org/sengoku/docs/NikkeiLinux00-03/qmail.ja.html]]~
[[第6章 スーパー&セキュアなMailサーバー構築(qmail編)>http://www.kuri3.net/modules/bwiki/index.php?MailServer]]~
丁寧で見やすいサイトです。~
[[目指せ!メールの達人!>http://www.luice.or.jp/~deai/backn/master/]]~
[[逆引きできないホストからのメールを遮断(qmail編)>http://www.b-dash.net/weblog/tanikin/qmail/]]~
[[第8章 SMTP-AUTH/STARTTLS & POP3 over SSL編>http://www.kuri3.net/modules/bwiki/index.php?SmtpAuth]]~
丁寧な説明があります。~
** 参考書籍
-[[10日でおぼえるRed Hat Linux9 サーバ構築・管理入門教室>http://www.amazon.co.jp/exec/obidos/ASIN/4798104124/worried-22]]~
Linuxに詳しくなく、初めてメールサーバーを立てるときはこれが一番はいりやすいかもしれません。
-[[qmailで作るメールサーバ徹底攻略>http://www.amazon.co.jp/exec/obidos/ASIN/4797320656/worried-22]]~
バーチャルドメイン等いろいろ詳しく乗っていたので大変重宝しました。~
** コメント
--#comment