必要なものリスト ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz http://www.emaillab.org/djb/qmail-vida/software/qmail-vida-0.50.tar.gz http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz パッチ ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch -------------------------------------------------------------------------------- 作業前に終わっていないといけないこと 1)bindの設定をしておく=DNSを引けるようにしておく ユーザをつくる # mkdir /var/qmail # groupadd nofiles # useradd -g nofiles -d /var/qmail/alias -s /bin/false alias # useradd -g nofiles -d /var/qmail -s /bin/false qmaild # useradd -g nofiles -d /var/qmail -s /bin/false qmaill # useradd -g nofiles -d /var/qmail -s /bin/false qmailp # groupadd qmail # useradd -g qmail -d /var/qmail -s /bin/false qmailq # useradd -g qmail -d /var/qmail -s /bin/false qmailr # useradd -g qmail -d /var/qmail -s /bin/false qmails # groupadd vida # useradd -g vida -d /var/qmail/ -s /bin/false qmailu # useradd -g vida -d /var/qmail/ -s /bin/false authdb # useradd -g vida -d /home/pop/ -s /bin/bash pop user pop は仮想メールボックスを使用するために必要らしい。 仮想メールボックスは pop の home directory に作成される。 # mkdir /home/pop # chown pop.vida /home/pop ファイルを開ける # tar xzvf qmail-1.03.tar.gz # tar xzvf qmail-vida-0.50.tar.gz # tar xzvf ucspi-tcp-0.88.tar.gz # tar xzvf checkpassword-0.90.tar.gz qmail-vidaのパッチをあてる。 # cd qmail-vida-0.50 # make patch # make copy さらに # patch -d qmail-1.03 < qmail-date-localtime.patch コンパイル&インストール # cd qmail-1.03 # make setup check # ./config-fast (ドメイン名) とします /var/qmail/control/ の locals と rcpthosts に 自分の domain を書く。 # cd ../checkpassword-0.90 # make setup check # cd ../ucspi-tcp-0.88 # make setup check # cd ../qmail-vida-0.50/src/vida/ # make setup check エイリアスをつくる # cd /var/qmail/alias # echo '&root' > .qmail-postmaster # echo '&root' > .qmail-mailer-daemon # echo '&root' > .qmail-www-admin # echo '&root' > .qmail-webmaster # echo '&root' > .qmail-admin # echo '&root' > .qmail-info 起動ファイルを作る *************************************** /var/qmail/rc #!/bin/sh # rc.smtpd PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin IP="(サーバのIPアドレスを書く)" HOST="(サーバのFQDNを書く)" exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start ./Maildir/ splogger qmail & exec env - ALLOWPLAIN="" \ PATH="$PATH" \ DOMAINOWNER="" \ softlimit -d6000000 \ tcpserver -vHR -l"$HOST" -c40 -- "$IP" 25 \ fixcrio \ qmail-smtpup "$HOST" checkpassword qmail-smtpd 2>&1 | \ splogger smtpd 4 & exec env - ALLOWPLAIN="" \ PATH="$PATH" \ DOMAINOWNER="" \ softlimit -d6000000 \ tcpserver -vHR -l"$HOST" -c40 -- "$IP" 110 \ qmail-popup "$HOST" checkpassword qmail-pop3d Maildir 2>&1 | \ splogger pop3d 4 & *************************************** ここでIPアドレスはグローバルであればそのIPアドレスになりますが、DDNSを使っているためローカルのIPアドレスを使用します。 HOSTはFQDNで記入します。FQDNでないと動作しません。※1 vidaを適用しない場合、tcpserverでuid gidを設定しますが、qmail-smtpupが代わりに設定しますので、設定してはいけません。 サーバ起動時に勝手に上がってくるようにするために /etc/init.d/qmail ************************************** #!/bin/sh # # qmail This shell script takes care # of starting and stopping qmail. # # chkconfig: 2345 80 30 # description: Starts and stops qmail. # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # HOST=[host.domain] # See how we were called. case "$1" in start) echo -n "Starting qmail: " # Using splogger to send the log through syslog. exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start ./Maildir/ splogger qmail & # Start smtpd exec env - FORCEAUTH="0.0.0.0" DOMAINOWNER=""\ (※2) /usr/local/bin/tcpserver -v 0 smtp \ /var/qmail/bin/qmail-smtpup $HOST \ /var/qmail/bin/checkpassword /var/qmail/bin/qmail-smtpd \ 2>&1 | /var/qmail/bin/splogger smtpd 4 & # Start pop3d exec env - ALLOWPLAIN="0.0.0.0" DOMAINOWNER=""\   (※2) /usr/local/bin/tcpserver 0 110 \ /var/qmail/bin/qmail-popup $HOST \ /var/qmail/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir \ 2>&1 | /var/qmail/bin/splogger popd 3 & echo touch /var/lock/subsys/qmail ;; stop) echo -n "Shutting down qmail: " killproc qmail-send killproc tcpserver echo rm -f /var/lock/subsys/qmail echo "" ;; restart) echo -n "Restarting qmail: " $0 stop $0 start echo "done." ;; status) status qmail ;; flush_queue) echo -n "Flush mail queue: " killall -ALRM qmail-send ;; *) echo "Usage: qmail {start|stop|restart|status|flush_queue}" exit 1 esac exit 0 *************************************** と、起動スクリプトを書きました。 「tcpserverのルールファイル」 平文認証を使うなら ALLOWPLAIN を指定します。 # cd /etc # touch tcp.smtp # chmod 600 tcp.smtp # vi tcp.smtp /etc/tcp.smtp 192.168.:allow,ALLOWPLAIN="" 127.:allow,RELAYCLIENT="" :allow # tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 「Maildir」 既存ユーザ分だけ、この作業を行う。 # su user $ /var/qmail/bin/maildirmake $HOME/Maildir $ echo ./Maildir/ > ~/.qmail $ exit 新しいユーザーをつくったら、/Maildirが作られるようにしておく。 # /var/qmail/bin/maildirmake /etc/skel/Maildir # echo ./Maildir/ > /etc/skel/.qmail 以下コマンドでパスワードデーターベースを初期化 # /var/qmail/bin/vida-pwdbinit sendmail対応 sendmailの名前を変更してなかったことにする。 # chmod 0 /usr/sbin/sendmail # mv /usr/sbin/senmail /usr/sbin/sendmail.younashi sendmailの代わりにqmailを呼ぶようにリンクを張る。 # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail そして、起動。 # /etc/init.d/qmail start 私の環境では以下を作業をやってQmail-vidaが独自にもっているパスワード データベースにユーザー名とパスワードを登録しないとダメでした。 以下コマンドは各ユーザーにてログインしてからでないと実行できません。 もちろんユーザーごとに登録します。 $ /var/qmail/bin/vida-passwd -a -u (ユーザ名) でパスワードを設定する 完了 ※1FQDNの解説  TCP/IPのネットワークにおいて、あるホストやドメインを指定する場合に、ドメイン名部分の文字列を省略せずにすべて記述する表記方法のこと。英語での呼称を省略して、FQDNと呼ばれる。日本語では完全修飾ドメイン名ともいう。たとえば、「www.atmarkit.co.jp」はFQDNの例である。  TCP/IPにおけるホスト名やドメイン名の表記方法は、たとえば「www.atmarkit.co.jp」という文字列ならば、「atmarkit.co.jp」がドメイン名を表し、「www」はそのドメインの中にあるホスト名(もしくはサブドメイン名)を表す。この場合、もしデフォルト・ドメインが「atmarkit.co.jp」ならば、「www.atmarkit.co.jp」ではなく単に「www」としても、それは「www.atmarkit.co.jp」を指すことになる。DNSにおける名前解決はFQDNによる比較が基本であるが、与えられた名前が見つからない場合は、自動的にデフォルト・ドメイン名を補って再度検索が行われるからだ。そのためユーザーは、FQDNではなく省略形を使うこともできる ※2 ここが重要です。 /etc/init.d/qmail つまりソフト(Qmail)の起動時の設定ファイルですが、そこの # Start smtpd exec env - FORCEAUTH="0.0.0.0" DOMAINOWNER=""\←この行 /usr/local/bin/tcpserver -v 0 smtp \ /var/qmail/bin/qmail-smtpup $HOST \ /var/qmail/bin/checkpassword /var/qmail/bin/qmail-smtpd \ 2>&1 | /var/qmail/bin/splogger smtpd 4 & # Start pop3d exec env - ALLOWPLAIN="0.0.0.0" DOMAINOWNER=""\←この行 /usr/local/bin/tcpserver 0 110 \ /var/qmail/bin/qmail-popup $HOST \ /var/qmail/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir \ 2>&1 | /var/qmail/bin/splogger popd 3 & 上記 smtpとpop3の起動時設定に ”←この行”の DOMAINOWNER=""\ の部分をちゃんと記述しないとSMTP認証されません。つまり、認証なしでもメールが送れてしまいます。 いろんな資料をみてみるとこの部分がなかったりするので要注意です。