メール・サーバー関連のインストール手順 #navi(OpenBlockS) OpenBlockS に qmail とその仲間をインストールして、メール・サーバーを構築する手順。 [[お家サーバー日記/2005-01-14]]大量の [[Double Bounce攻撃>OpenBlockS/DoubleBounce]]を受けて、 現在 Postfix に変えてしまったため、過去の情報となってしまっている。 **目次 **目次 [#k3a02512] #contents **関連リンク -[[qmail djbdns by D. J. Bernstein:http://www.jp.qmail.org/]] - 配布ファイル・マニュアル **関連リンク [#xe3094a3] -[[qmail djbdns by D. J. Bernstein:http://www.qmail.jp/qmail.html]] - 配布ファイル・マニュアル -[[メイル管理入門:http://qmail.jp/mail-abc/]] - 前野年紀氏による -[[[@IT]連載記事 「実用qmailサーバ運用・管理術」:http://www.atmarkit.co.jp/flinux/index/indexfiles/qmailindex.html]] - 基本的な設置手順はここでかかれているとおり **qmail Quick reference **qmail Quick reference [#ffb8879c] [[/var/qmail/control:http://man.qmail.jp/jman5/qmail-control.html]] を書き換えたら、qmail-send を再起動 (sudo sh -c "svc -d /service/qmail; svc -u /service/qmail") する必要がある。locals と virtualdomains の変更だけなら -HUP を送れば良い。 |内容|コマンド|h |キューの状態を調べる|sudo /var/qmail/bin/qmail-qstat| |設定一覧を見る|/var/qmail/bin/qmail-showctl| |どこかへメールを出す|echo to: someone@example.jp | /var/qmail/bin/qmail-inject| **install **install [#t17d9d27] qmail と付随するツール類が改竄されていないかチェックする方法が他のパッケージに比べて少ない。[[Frequently asked questions from distributors:http://cr.yp.to/distributors.html]] に MD5 checksum が掲載されているが、これごと改竄されていたら打つ手が無いような気がする。とりあえず、私のところで動いているものの MD5 を載せておく。 -http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz -http://cr.yp.to/daemontools/daemontools-0.76.tar.gz -ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz -ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch -ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz e75842e908f96571ae56c3da499ba1fc checkpassword-0.90.tar.gz 1871af2453d6e464034968a0fbcb2bfc daemontools-0.76.tar.gz 622f65f982e380dbe86e6574f3abcb7c qmail-1.03.tar.gz d566e8bd99b33efee0194e855b8d6995 qmail-date-localtime.patch 39b619147db54687c4a583a7a94c9163 ucspi-tcp-0.88.tar.gz ***qmail ***qmail [#p3118d19] 本体と、ヘッダに記録される日付・時間情報をローカルタイムに合わせるパッチを展開 $ mkdir -p ~/src/01distfiles/qmail $ cd ~src/01distfiles/qmail $ wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz $ wget ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch $ cd ../.. $ mkdir qmail $ cd qmail $ tar xzvf ../01distfiles/qmail/qmail-1.03.tar.gz $ cd qmail-1.03 $ patch -p1 < ../../01distfiles/qmail/qmail-date-localtime.patch make の前に、以下をrootで実行 #!/bin/sh mkdir /var/qmail groupadd -g 600 nofiles useradd -g nofiles -d /var/qmail/alias -s /sbin/nologin -u 610 alias useradd -g nofiles -d /var/qmail -s /sbin/nologin -u 611 qmaild useradd -g nofiles -d /var/qmail -s /sbin/nologin -u 612 qmaill useradd -g nofiles -d /var/qmail -s /sbin/nologin -u 613 qmailp groupadd -g 601 qmail useradd -g qmail -d /var/qmail -s /sbin/nologin -u 614 qmailq useradd -g qmail -d /var/qmail -s /sbin/nologin -u 615 qmailr useradd -g qmail -d /var/qmail -s /sbin/nologin -u 616 qmails コンパイル。DNSの準備が充分でなければ(MXレコードでサーバーが登録されているという意味で)、./config-fast を使う。make setup は、他のソース・ツリーで言えば make install に相当する。root で実行する必要がある。 # make setup # make check # ./config-fast mail.example.jp コントロール・ファイルの設定 # cd /var/qmail/control # echo example.jp >defaultdomain # cat <<EOF >locals localhost localhost.example.jp host.example.jp example.jp EOF # cat <<EOF >rcpthosts localhost example.jp .example.jp EOF # echo mail.example.jp >me # echo example.jp >plusdomain # echo example.jp >defaulthost alias の設定 # cd /var/qmail/alias # touch .qmail-postmaster .qmail-mailer-daemon .qmail-root # chmod 644 .qmail* sendmail の駆逐 # cd /usr/sbin # mv sendmail sendmail.dist # chmod 0 sendmail.dist # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail Maildir への移行 # cp /var/qmail/boot/home /var/qmail/rc # vi /var/qmail/rc s!/Mailbox!/Maildir/!g とする alias のメール・ボックスを Maildir にする。 # /var/qmail/bin/maildirmake ~alias/Maildir # chown -R alias ~alias/Maildir 新規ユーザーの追加 useradd foo -m の時、各ユーザーのホーム・ディレクトリに Maildir が作られるようにする。 # mkdir /etc/skel # /var/qmail/bin/maildirmake /etc/skel/Maildir tcpserver による SMTP daemon の起動 $ cd ~src/01distfiles/qmail $ wget ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz $ cd ../../qmail $ tar xzvf ../01distfiles/qmail/ucspi-tcp-0.88.tar.gz $ cd ucspi-tcp-0.88 $ su # make setup check # cd /etc # cat <<EOF >tcp.smtp 192.168.0.:allow,RELAYCLIENT="" 127.:allow,RELAYCLIENT="" EOF # /usr/local/bin/tcprules tcp.smtp.cdb tcp.smtp.tmp <tcp.smtp 起動スクリプトの設定 【後日談: daemontools による管理に変えたのでこの作業は不要になった】 # mkdir -p /usr/local/etc/rc.d # cd /usr/local/etc.d # cat <<EOF >qmail #!/bin/sh # # qmail: /var/qmail PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin [ -f /var/qmail/rc ] || exit 0 case "$1" in start) # Start daemons. echo "Starting qmail." csh -cf '/var/qmail/rc &' tcpserver -v -u 611 -g 600 -x /etc/tcp.smtp.cdb \ 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 \ | /var/qmail/bin/splogger smtpd 3 & echo touch /var/spool/lock/qmail ;; stop) # Stop daemons. 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 echo rm -f /var/spool/lock/qmail ;; *) echo "Usage: S99qmail {start|stop}" exit 1 esac exit 0 EOF # chmod 755 qmail 立ち上げ時に自動起動するように /etc/rc.local に以下を加える 【後日談: daemontools による管理に変えたのでこの作業は不要になった】 if [ -x /usr/local/etc/rc.d/qmail ]; then /usr/local/etc/rc.d/qmail start fi メールが届くかどうか確認する。 # /usr/local/etc/rc.d/qmail start # ps aux | grep qmail # echo to: root | /var/qmail/bin/qmail-inject # ls -l /var/qmail/alias/Maildir/new # cat /var/qmail/alias/Maildir/new/* 届かないようなら、『[[メイル管理入門 実践編:http://qmail.jp/mail-abc/tandp2.html]]』を参考に調べる。 **Courier IMAP **Courier IMAP [#oea436af] [[Courier-IMAP server:http://www.inter7.com/courierimap/]] POP3とIMAPでアクセスできるように、courier を入れる。APOPにはそのままでは対応できないようだが、SSL が使えるので不要だと思われる。POP before SMTP についても、外から SMTP サーバーを使うことはないので、やらない。どうしても外から SMTP したければ、ssh 経由でできる。 http://www.courier-mta.org/download.php から ~/src/01distfiles に courier-imap-1.7.1.tar.bz2 をダウンロードする。パッケージ化も同時に行う。 $ cd ~/src $ tar xjvf 01distfiles/courier-imap-1.7.1.tar.bz2 $ cd courier-imap-1.7.1 $ ./configure --prefix=/usr/local $ make $ mkdir -p ~/src/02locakpkg/courier/courier-imap-1.7.1/etc/pam.d $ make DESTDIR=~/src/02locakpkg/courier/courier-imap-1.7.1 install $ cd ~/src/02locakpkg/courier/courier-imap-1.7.1 $ mv etc .. $ sudo /usr/sbin/chown -R root.wheel usr $ sudo tar czvf ../courier-imap-1.7.1.tar.gz usr $ sudo rm -rf usr $ cd .. $ sudo tar xzvf courier-imap-1.7.1.tar.gz -C / /etc/pam.conf に以下を加える。imap エントリは元から存在するので session だけ加えることになる。 # # The PAM configuration file for the `pop3' service # pop3 auth required pam_unix.so pop3 account required pam_unix.so pop3 session required pam_unix.so # # The PAM configuration file for the `imap' service # imap auth required pam_unix.so imap account required pam_unix.so imap session required pam_unix.so 設定ファイルを初期化 # cd /usr/local/etc # cp imapd.dist imapd # cp imapd-ssl.dist imapd-ssl # cp pop3d.dist pop3d # cp pop3d-ssl.dist pop3d-ssl # cp authdaemonrc.dist authdaemonrc # cp quotawarnmsg.example quotawarnmsg サーバー鍵を適当に作るか、認証局で作ってもらう。(ssl を動かさないなら不要) # cd /usr/local/share # cp ~/mail.example.jp.pem imapd.pem # cp imapd.pem pop3d.pem 起動スクリプトを書く(ssl を動かさないならpop3d-ssl, imapd-ssl は削除する) # cd /usr/local/etc/rc.d # cat <<EOF >courier #!/bin/sh case "$1" in start) # Start daemons. /usr/local/libexec/authlib/authdaemond start /usr/local/libexec/pop3d.rc start /usr/local/libexec/pop3d-ssl.rc start /usr/local/libexec/imapd.rc start /usr/local/libexec/imapd-ssl.rc start ;; stop) # Stop daemons. /usr/local/libexec/pop3d.rc stop /usr/local/libexec/pop3d-ssl.rc stop /usr/local/libexec/imapd.rc stop /usr/local/libexec/imapd-ssl.rc stop /usr/local/libexec/authlib/authdaemond stop ;; *) echo "Usage: S99courier {start|stop}" exit 1 esac exit 0 EOF # chmod 755 courier 立ち上げ時に自動起動するように /etc/rc.local に以下を加える if [ -x /usr/local/etc/rc.d/courier ]; then /usr/local/etc/rc.d/courier start fi MUA(mozilla 等がおすすめ)でアクセスしてみる **daemontools **daemontools [#s88304ec] どうも、起動時や DNS がおかしい場合に、smtp が止まってしまうようなので、こうなったら毒を食らわば皿までよ、ってことで daemontools を入れることにした。[[@IT: daemontoolsによるロギングとプロセス監視(1-3):http://www.atmarkit.co.jp/flinux/rensai/qmail09/qmail09a.html]] のとおりでうまくいった。毒とは失礼な表現だが、セキュリティ的な意味ではなく、ディレクトリの構成とかメンテナンスのしやすさ -- これも問題は文化の違いだけだと思われるが -- とかを見て、私が感じた表現である。 $ cd ~/src/01distfiles/qmail $ wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz $ su # mkdir -p /package # chmod 1755 /package # tar -xzvpf daemontools-0.76.tar.gz -C /package # cd /package/admin/daemontools-0.76 # ./package/install # vi /var/qmail/rc :s!qmail-start ./Maildir/ splogger qmail!qmail-start ./Maildir/! :w :q # mkdir /var/qmail/services # mkdir /var/qmail/services/qmail # mkdir /var/qmail/services/qmail/log # chmod +t /var/qmail/services/qmail # cat <<EOF >/var/qmail/services/qmail/run #!/bin/sh PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin exec /var/qmail/rc EOF # cat <<EOF >/var/qmail/services/qmail/log/run #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail EOF # chmod +x /var/qmail/services/qmail/run # chmod +x /var/qmail/services/qmail/log/run # mkdir /var/log/qmail # chown qmaill.nofiles /var/log/qmail # chmod 700 /var/log/qmail # cd /service/ # ln -s /var/qmail/services/qmail . # mkdir /var/qmail/services/smtpd # mkdir /var/qmail/services/smtpd/log # chmod +t /var/qmail/services/smtpd # cat <<EOF >/var/qmail/services/smtpd/run #!/bin/sh PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin tcpserver -v -u 611 -g 600 -x /etc/tcp.smtp.cdb \ 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 EOF # cat <<EOF >/var/qmail/services/smtpd/log/run #!/bin/sh exec /usr/local/bin/setuidgid qmails /usr/local/bin/multilog t /var/log/smtpd EOF # chmod +x /var/qmail/services/smtpd/run # chmod +x /var/qmail/services/smtpd/log/run # mkdir /var/log/smtpd # chown qmails.nofiles /var/log/smtpd # chmod 700 /var/log/smtpd # cd /service/ # ln -s /var/qmail/services/smtpd . 以前の起動スクリプトは動かないようにしておく。 # cd /usr/local/etc/rc.d # mv qmail qmail.old # chmod 644 qmail.old ***Quick Reference ***Quick Reference [#b67837aa] smtpd とか qmail/log とか個別でサービスを止めたりしなければならない |内容|コマンド|h |サービスを止める|sudo svc -d /service/qmail| |サービスを開始|sudo svc -u /service/qmail| |ログを見る|sudo tail -50 /var/log/qmail/current | tai64nlocal| **fetchmail **fetchmail [#y95c2c52] -[[Fetchmail Home Page:http://www.catb.org/~esr/fetchmail/]] - [[fetchmail(1):http://www.catb.org/~esr/fetchmail/fetchmail-man.html]] ([[JMで翻訳はまだのようだ:http://www.linux.or.jp/JM/html/fetchmail/man1/fetchmail.1.html]]) 過去のいろんなところに作った POP3 アカウントのメールを自宅サーバーで一括して受けるために、fetchmail を入れてみる。 GNU gettext によって日本語のメッセージが出せるようだが、コンパイルが止まってしまうようなので、--disable-nls して使わないようにした。翻訳してくれた人には悪いが、どうせ cron で動かすのだから、エラーメッセージ等が日本語である必要はない。 WEB には、GPG の signature ファイルが存在するような記述があるのだが、落とせないようだ。checksums は落とせるので、これを gpg で検証して、本体は md5sum でチェックする。 $ cd ~/src/01distfiles $ wget http://www.catb.org/~esr/fetchmail/fetchmail-6.2.3.tar.gz $ wget http://www.catb.org/~esr/fetchmail/checksums $ gpg --verify checksums $ grep tar checksums e131bdb6c3977fd47a3e122c43dcf19d fetchmail-6.2.3.tar.gz $ md5sum fetchmail-6.2.3.tar.gz e131bdb6c3977fd47a3e122c43dcf19d fetchmail-6.2.3.tar.gz $ cd .. $ tar xzvf 01distfiles/fetchmail-6.2.3.tar.gz $ cd fetchmail-6.2.3 $ ./configure --disable-nls $ make $ mkdir ~/src/02localpkg/fetchmail $ make DESTDIR=~/src/02localpkg/fetchmail install $ cd ../02localpkg/fetchmail $ tar czvf fetchmail-6.2.3-ssdlinux-1.tgz --owner=root --group=wheel usr $ rm -rf usr $ sudo tar xzvf fetchmail-6.2.3-ssdlinux-1.tgz -C / fetchmailconf を動かすには、python が必要だ。とりあえず、手で設定ファイルを書くことにする。smtpname を書かないと、現在のユーザー名@localhost というアドレスに転送されるようだ。/var/qmail/locals に localhost の記述がない場合、外に出て行ってしまうので注意。設定の記述方法に関しては、[[Red Hat Linux レファレンス・ガイド:http://www.jp.redhat.com/manual/Doc72/RH-DOCS/rhl-rg-ja-7.2/s1-email-fetchmail.html]]が参考になる。 $ cat .fetchmailrc set no bouncemail defaults protocol pop3 uidl no rewrite no keep no mimedecode smtpname "otsuka@example.jp" skip pop3.provider1.example.jp user "otsuka" pass "secret1" smtpname "otsuka-provider1@example.jp" poll pop3.provider2.example.jp user "abcd001" pass "secret2" smtpname "otsuka-provider2@example.jp" smtpname で転送先を変えて、前振り分けでプロバイダごとに IMAP フォルダに直接配信している。再配送には、smtp (tcp/25) を使うようだ。この場合問題点として、localhost で qmail での配送に失敗した場合、差出人に返されてしまう。smtp の入り口でエラーになると fetchmail が set no bouncemail 設定に従って postmaster にエラーを報告するようにできるようだが、qmail の場合は、受け取った後でエラーになり、qmail 自身がエラー報告してしまうので、まずいことになる。(通常 pop3 から先は、配送経路とは関係ない場所なので、ここからエラーメールを返されても送信者は困惑するだろう)。 cron で fetchmail を定期的に起動する。ログは溜まってくるのがいやなので syslog に 渡すことにする。${HOME}/.fetchmailrc に set syslog を書いておけばいいようだ。 syslogにセットしていても、fetchmail 実行時に ... のような出力がある。 cronで実行するときは、これがメールで飛んでくるのでうっとうしい。 fetchmail に -s オプションを付けて起動すると、syslog まで silent になってしまって、ログが全く無くなってしまう。融通の利かないやつだ。 fetchmailには、自分で daemon として動く機能があるから、コマンドラインで呼び出すのは人間が手でやっているに違いない、とでも思って設計しているのだろうか。 とりあえず、不要な出力は適当なファイルにリダイレクトすることにする。 何か不具合があった場合だけエラーを表示してくれたら、cron のメールを捕まえて 対処できるのに。 SHELL=/bin/sh 5 7 * * * /usr/local/bin/fetchmail > $HOME/lib/fetchmail.out 2>&1 **maildrop **maildrop [#t4dcbd8b] http://www.courier-mta.org/download.php から ~/src/01distfiles に maildrop-1.5.3.tar.bz2 をダウンロードする。パッケージ化も同時に行う。 $ cd ~/src $ tar xjvf 01distfiles/maildrop-1.5.3.tar.bz2 $ cd maildrop-1.5.3 $ ./configure $ make $ mkdir ~/src/02localpkg/maildrop $ make DESTDIR=~/src/02localpkg/maildrop install $ cd ~/src/02localpkg/maildrop courier-IMAP とファイルが重なっているようだ。 $ cd ~/src/02localpkg/maildrop $ find usr -type f -print | (cd /; xargs file) | grep -v "can't stat" usr/local/man/man1/maildirmake.1: troff or preprocessor input text usr/local/man/man8/deliverquota.8: troff or preprocessor input text usr/local/bin/maildirmake: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped courier-IMAP のファイルを使うことにして、こちらのパッケージからは削除する。 $ cd ~/src/02localpkg/maildrop $ rm usr/local/man/man1/maildirmake.1 $ rm usr/local/man/man8/deliverquota.8 $ rm usr/local/bin/maildirmake $ tar czvf maildrop-1.5.3-ssdlinux-1.tgz --owner=root --group=wheel usr 動作テスト $ cat ~/.mailfilter to "Maildir" $ chmod 600 ~/.mailfilter $ cat dummy-mail To: otsuka From: root Subject: test mail this is test $ maildrop <dummy-mail maildrop: Delivery complete. maildrop: signal 0x06 なぜか、signal 0x06 が出て異常終了となる。signal を受ける部分は、ソース maildrop/maildrop.C にあるのだか、どうも 0 から NSIG(=64) の全てにトラップをかけているようだ。signal 6 は、/usr/include/bits/signum.h にあるように SIGIOT なのだが、この signal はすでに使われていないような気がする[[[Linux GCC HOWTO:http://www.linux.or.jp/JF/JFdocs/archive/GCC-HOWTO.html]]]。~/.mailfilter を消せば正常終了するようだが、フィルタが書けなければ意味が無い。ちなみに ~/.mailfilter は、他人が読めるような属性になっているばあいは、読み込まれないので注意。 fetchmail の rc-file を以下のようにしてテスト $ cat test-fm set no bouncemail defaults protocol pop3 uidl no rewrite no keep no mimedecode mda "maildrop .mailfilter" poll pop3.provider1.example.jp user "otsuka" $ fetchmail -v -f test-fm **日々の運用 ***前振り分け **日々の運用 [#f5819747] ***前振り分け [#g41cbc57] +otsuka-123@example.jp というようなアドレスをホームページなどに書いておく +MUA で IMAP フォルダ Junk を作る +$HOME/.qmail-default に /home/otsuka/Maildir/.Junk/ と書いておけば、otsuka-xxx@example.jp のような宛先のメールは、全て Junk フォルダ直行となる。biff も吠えない。 +メーリングリストへは、otsuka-ml@example.jp のようなアドレスで参加して、$HOME/.qmail-ml で特定の IMAP フォルダに振り分ければよい。 ***ログイン名とメールアドレスの使い分け ***ログイン名とメールアドレスの使い分け [#h281add4] ログイン名をメールアドレスにしたくない場合は、対応表を作って対処できる。 $ sudo sh -c "/var/qmail/bin/qmail-pw2u </etc/passwd >/var/qmail/users/assign" $ sudo vi /var/qmail/users/assign ログイン名 otsuka で、メールアドレスを foo@example.jp とし、foo-xxx@example.jp でも受け取りたい場合は、 +:alias:610:600:/var/qmail/alias:-:: =alias:alias:610:600:/var/qmail/alias::: +alias-:alias:610:600:/var/qmail/alias:-:: =otsuka:otsuka:32769:100:/home/otsuka::: =foo:otsuka:32769:100:/home/otsuka::: +foo-:otsuka:32769:100:/home/otsuka:-:: . とすれば良いだろう。最終行のピリオドを忘れないように。/var/qmail/users/assign を更新したら、qmail-newu で変更を反映しておく。 $ sudo /var/qmail/bin/qmail-newu 拡張アドレス (foo-xxx@example.jp のようなアドレス) で受け取りたいときは、さらに $HOME/.qmail-default もしくは、$HOME/.qmail-xxx を書いておかないと、配送エラーで差出人に戻される。 $ cat <<EOF >~/.qmail-default /home/otsuka/Maildir/ EOF ***携帯電話に出せない場合 ***携帯電話に出せない場合 [#rf0aad5a] ADSLのアクセス・ポイントのアドレスでメール・サーバーを運用する場合、相手先のポリシーによっては断られることがある。その場合、プロバイダの smtp サーバーへ渡してしまえば良い。プロバイダの送信用のメール・サーバーが smtp.example.jp の場合、 $ sudo sh -c "echo :smtp.example.jp >/var/qmail/control/smtproutes" 但し、プロバイダのメール・サーバーがメールの中継を許可している必要がある。幸い私のプロバイダは、アクセス・ポイントからの送信に限っては、中継してくれるようなので問題無かったが、POP3 でアクセスしてからでないとメールを出せないプロバイダの場合は、何らかの対策をする必要がある。 ***コンソール通知 ***コンソール通知 [#xcc8f873] UNIXでは、login 時と shell のコマンド・プロンプトが出るタイミングでメールボックスをチェックしてくれて、"You have New Mail" とか出してくれる機能がある。これが、Maildir にすることによって機能しなくなっている。POP3 とか IMAP4 でアクセスできるのだから不要だといえば不要なのだが、設定できるのならしておきたい。 l/etc/login.defs にある QMAIL_DIR 環境変数をセットすれば、環境変数 MAILDIR=/home/otsuka/Maildir とセットしてくれるようになるが効能は不明。しかも、ssh を使ったログインだとセットされない。 bash が Maildir に対応しているのかどうか不明だが、どうもだめなようだ。mailbox 形式の場合は、環境変数 MAIL と MAILPATH にセットすればいいのだが、Maildir 形式の場合は設定できないようだ。 ***でたらめの差し戻し先 ***でたらめの差し戻し先 [#x4f9a1a8] 最近のルータで、何か異常が起きたら特定のメールアドレスへメールを送ってくれるものがある。そのメールを受け取って、さらに携帯電話へも転送しようとしたら、問題が発生した。 まず最初、メールを出す機器が、差し戻し先 (Return-Path:) に、でたらめなアドレス (root@mailto.localhost など) を入れる。これは、メールは出せるが受け取ることが出来ないルータ等の機器の場合、しかたのないことかもしれない。転送先の携帯電話のメール・サーバーは、このでたらめな差し戻し先が気に食わないので、受け取りを拒否した。しかたが無いので、このような経緯を追加して差し戻しを行おうとしたら戻せない。最後に MAILER-DAEMON へ差し戻しとなってしまった。 あんまり良い対応とはいえないが、/var/qmail/control/locals に機器が設定してきたでたらめのドメイン名 mailto.localhost を加えて、外に出ないようにした。本来、メールが出せる機器で、差し戻し先も設定できるようにすべきだと思う。 加えて、携帯電話への転送は、dot-qmail でシェル・スクリプトを起動し、ここでメールを作り直してから qmail-inject へ投げなおしている。これなら、差し戻し先はこのサーバーなので問題ない。 **解決済みの問題点 **解決済みの問題点 [#i5e828e5] +shell からユーザー名だけでメールを出したとき、省略した From や、To にホスト名(/var/qmail/control/me の内容)が出てきてしまう。sudo sh -c "echo example.jp >/var/qmail/control/defaulthost" とする。 +tcpserver で起動した smtp や pop3d が止まっていることがある。再起動を行った場合は smtp が必ず止まってしまうようだ。ログを見ても理由が書いてない。daemontools を使えば、止まったときには再起動してくれるようだ。qmail 教は寡黙なのを美としているようだ(勝手な思い込みかもしれない)が、これでは対策のしようが無い。起動スクリプト (/usr/local/etc/rc.d/qmail) で一旦止めてから動かすと、止まることは無いようだ。停電などの場合に自動復帰しないのは非常に困る。 +pop3 と smtp を ssl 化しようとしているが、stone や stunnel が動かない。 #include(免責事項)