qmailメールサーバ(Mail Transfer Agent)です。ありゃ?いつのまにかパブリックドメインになっている!んーでも5年遅すぎたように思いますがどうでしょうか。 qmailパッケージがパブリックドメインに
環境設定qmail ucspi-tcp checkpassword or checkpw(APOP対応 vpopmailを使う場合はいりません。) qmailanalog をダウンロードします。ソースは/usr/loca/srcに展開します。 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のパッチも当たっているんですね。 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宛メールを転送してくれます。 /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にあります。 /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より 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で問題があるらしいので、修正します。リソースを使い切ってしまうらしいのです。 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) /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がサービスを停止していたとは思いもよらなかったです。 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 vpopmailvpopmailを使って、複数ドメインに対応してましょう。また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 =: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 あたりのファイルを持ってきます 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 メッセージ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-vidahttp://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/ QVAdminqmail + qmail-vidaの環境のアカウント設定ツールだそうです。
http://software.my-highway.net/cgi/pukiwiki/pukiwiki.php?QVAdmin チェックメールサーバを構築したら、必ずチェックしておきましょう。
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で翻訳したのですが、いがいと翻訳できておりました。 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 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 clamav-0.83以上はzlibのバージョンが1.2.1以下だと怒られるので、1.2.2以上にあげておきましょう。clamd -Vでバージョンを確認しておkます。 /usr/local/etc/freshclam.confを開いて 次はclamdの設定です。/usr/local/etc/clamd.confを開いて、
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 これで起動しました。 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 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 ./test_installation.sh -doit mail-inject: fatal: qq temporary problem (#4.3.0) するとエラーがでました。これはperl-suidperlがなかったために出ているようでした。他にもclamdが動いてない場合とか... 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 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 のユーザ定義ファイル(SpamAssassin を fetchmail から利用する方法)で置き換えておきます。 required_score 13.0 で設定しておきます。 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を参照しましょう。 Can't locate Archive/Tar.pm in @INC (@INC contains:... とでたので、 perl -MCPAN -e shell Archive::Tar.pm として入れておきました。/var/lib/spamassassin/3.002004にダウンロードされてます。 では学習もさせましょう。いろいろと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 の紹介とレシピの書き方 大変わかりやすくレシピの書き方を紹介されてます。 vqadminvqadminは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
/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 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 qmHandleqmHandleは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 のメールキューの閲覧・削除に
指定アドレス宛のキューの削除等公開されており、大変参考にさせていただいております。 qmailanaloghttp://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に登録しておきましょう。ちなみに zoverall <--基本的な統計 zfailures <--失敗統計 zdeferrals <--延期統計 zrecipients <--受信者統計 zsenders <--送信者統計 http://www.atmarkit.co.jp/flinux/rensai/qmail10/qmail10a.html メーリングリストmailmanmailmanというソフトをインストールします。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 メーリングリストfmlfmlというソフトを使います。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 自動応答自動応答のためのツールをインストールします。 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 qmailadminWEB上からユーザアカウントが作成できるツールです。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 Outbound Port25 BlockingISPの送信用メールサーバを利用しないメール送信を制限するものだそうです。こちらにわかりやすく書いてあります。http://bb.watch.impress.co.jp/cda/bbword/8764.html iptables -A PREROUTING -p tcp -m tcp --dport 587 -j REDIRECT --to-ports 25 で587を25に転送しておいてもいいのですが、当然smtp authではありません。 SPFDNSのTXTに hoge.com. IN TXT "v=spf1 +ip4:1.2.3.4 ~all" 設定したら、check-auth@verifier.port25.comにメールを送って確認。passと返ってくればOK Sender ID:送信者側の設定作業 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/ TIPSsendmailの入れ替え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編~ 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)に制限 配送試行間隔についてメールサーバーってどういう感じで再試行をしているのかなを参考にさせていただきました。 メール転送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ファイルが残っていたようです。消して再起動すると、うまくいきました。 メールアドレスで使用できない文字メールアドレスで使用できない文字の種類がわかるサイトを教えてください。 グリーティング・メッセージを変更したい/var/qmail/control/smtpgreetingファイルを作成して、 ホスト名 メッセージ とします。ですので、 host message みたいにしておきます。 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 とかにして宛先を変更します。 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 となってました。
参考:
[文字化けすると、こう見える! なんやねん。Winmail.datって添付ファイル送ったけど、添付されないことがあるって聞いて調べていたら、送信者はOutlook 2007で、受信者はOutlookExpress?。
マイクロのメーラなんてつかわんでほしいなー MEMOsmtproutes file リンクqmail * djbdns by D. J. Bernstein 参考書籍
コメント
|