「qmailメモ」の編集履歴(バックアップ)一覧に戻る

qmailメモ - (2005/11/28 (月) 13:43:02) のソース

#contents

*インストール
http://www.asahi-net.or.jp/~aa4t-nngk/qmail.html を参考にした。

まず、qmailホームディレクトリを作成。
 # mkdir /var/qmail

次にqmailのプロセスが使用するgroupとuserを作成。
(gidとuidを600番台とするが自由)
 # groupadd -g 600 nofiles
 # groupadd -g 601 qmail
 # useradd -u 600 -g nofiles \
   -d /var/qmail/alias -m -k /dev/null -s /sbin/nologin alias
 # useradd -u 601 -g nofiles \
   -d /var/qmail -m -k /dev/null -s /sbin/nologin qmaild
 # useradd -u 602 -g nofiles \
   -d /var/qmail -m -k /dev/null -s /sbin/nologin qmaill
 # useradd -u 603 -g nofiles \
   -d /var/qmail -m -k /dev/null -s /sbin/nologin qmailp
 # useradd -u 604 -g qmail \
   -d /var/qmail -m -k /dev/null -s /sbin/nologin qmailq
 # useradd -u 605 -g qmail \
   -d /var/qmail -m -k /dev/null -s /sbin/nologin qmailr
 # useradd -u 606 -g qmail \
   -d /var/qmail -m -k /dev/null -s /sbin/nologin qmails

ソースをダウンロード。ここではnetqmailを使う。netqmailはいろいろパッチがあたった状態のqmailなのでインストールが少しだけ楽になる。
(それでもパッチは当てなくちゃならない)

-netqmail-1.05.tar.gz &br()DL先 http://qmail.org/netqmail-1.05.tar.gz

必要なパッチを以下からダウンロード。
-netqmail-1.05-smtpd-auth-0.31.patch &br()DL先 http://www.asahi-net.or.jp/~aa4t-nngk/codes/netqmail-1.05-smtpd-auth-0.31.patch
-qmail-date-localtime.patch &br()DL先 http://www.asahi-net.or.jp/~aa4t-nngk/codes/qmail-date-localtime.patch

上記ファイルをwinscpとかで/usr/local/srcにコピー。
インストール開始。
 # cd /usr/local/src
 # tar xvfz netqmail-1.05.tar.gz
 # rm netqmail-1.05.tar.gz
 # cd netqmail-1.05/
 # ./collate.sh

必要なパッチを当てる。
 # cd netqmail-1.05/
 # patch -p1 < ../../qmail-date-localtime.patch
 # patch -p1 < ../../netqmail-1.05-smtpd-auth-0.31.patch

インストール。
サーバホスト名は環境に合わせる(hoge.comとか)
 # make setup check
 # ./config-fast サーバホスト名

完了。

manページを読めるように修正。
 # vi /etc/man.config
 MANPATH /usr/share/man などが書かれている辺りに
 MANPATH /var/qmail/man と足す。

sendmailのラッパーを使えるようにする。
 # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
 # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

メール使うユーザの追加。ここではinfoというユーザを追加した。
 # useradd info

ユーザのMailDirの整備。
 # su info
 $ /var/qmail/bin/maildirmake /home/info/Maildir
 $ exit

システム環境の整備。
/etc/profile の以下の部分を編集。
 MAIL="$HOME/Maildir"  <--変更
 MAILDIR=$MAIL         <--追加
 export PATH USER LOGNAME MAIL MAILDIR ... <--MAILDIRを挿入

/etc/login.defs も修正。
 QMAIL_DIR    Maildir  <--コメント解除
 MAIL_DIR     Maildir  <--変更
 #MAIL_FILE   .mail    <--要らないのでコメントアウト

起動準備。
 # cd /var/qmail/alias
 # touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
 # chmod 644 .qmail* 

/var/qmail/boot/homeを/var/qmailにrcという名前でコピー。
 # cp /var/qmail/boot/home /var/qmail/rc

Maildirへの移行。
コピーした/var/qmail/rcファイルの内容を下記のように編集。
 qmail-start ./Mailbox splogger qmail
 ↓
 qmail-start ./Maildir/ splogger qmail

MailDir対応設定。
 # /var/qmail/bin/maildirmake ~alias/Maildir
 # chown -R alias /var/qmail/alias/Maildir/

ここまできて、やっと起動。長かった。
 # /var/qmail/rc & 

終了するときは以下。
 #pkill qmail-send

メール受信テスト。
 # echo to: info@hoge.com | /var/qmail/bin/qmail-inject
 # more /var/qmail/alias/Maildir/new/xxxxxxxxx

*tcpserverによるqmail起動
まずtcpserverをインストール。
以下からソースダウンロード。
ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz
winscpとかで/usr/local/srcにコピー。

インストール開始。
 # cd /usr/local/src/
 # tar xvfz ucspi-tcp-0.88.tar.gz
 # rm ucspi-tcp-0.88.tar.gz
 # cd /ucspi-tcp-0.88/

パッチを当てる(netqmailの中にあるパッチを使用)
 # 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

インストール
 # make
 # make setup check

cdbファイルの作成。/etc/tcp.smtp として作成する。
 # vi /etc/tcp.smtp
 192.168.0.allow,RELAYCLIENT=""
 127.:allow,RELAYCLIENT=""
 :allow	←これは受信用
 
 # /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

tcpserverを介してqmailを起動する。下記コマンドで起動する。
(一行で記述。UID,GIDは id qmaild コマンドで確認できる)
 # tcpserver -v 
   -u[qmaildのUID] 
   -g[nofilesのGID]
   -x /etc/tcp.smtp.cdb 0 
   smtp /var/qmail/bin/qmail-smtpd 2>&1 
   | /var/qmail/bin/splogger smtpd 3 &

終了するときは ps aux | grep tcp とかで pid調べて kill コマンド。

*qmailのroot宛のメールを受け取るには
参考:http://daisy.math.sci.ehime-u.ac.jp/users/tsuchiya/unix/freebsd/qmail.html

qmailでは,rootは直接メールを受取ることができない。そこで、.qmail-rootでroot宛のメールを受取る人(のメールアドレス)(複数の宛先指定可能)を書く。フォーマットは以下。
 &hoge
 &hoge1@hogehoge.hoge
 &hoge2@hogehoge.hoge
 
 ※とりあえず、.qmail-なんたらファイルに全部書いておいた。
  MAILER-DAEMONとかもこれで受け取れるようになった。

*qmailの管理ツール
queue の内容をリストにして表示。
 /var/qmail/bin/qmail-qread

*DDNS+qmailで携帯にメールが送れない対策
補完 爽
http://miyazaki.ddo.jp/linuxserver/qmailkeitai.html

(DDNS) ダイナミックDNS を使用してメールサーバを立ち上げていると、携帯宛にメールが送れない。もうずっと前から気が付いていたので、いつも携帯宛に送るときだけはメーラの設定を自SMTPサーバではなく、契約プロバイダの SMTPサーバを指定して送信していた。

最近は携帯各社の迷惑メール対策が厳しく行われているため、DDNSなどから接続した IP アドレスを逆引きしたドメイン名とメールサーバのドメイン名が異なる場合には SPAMメールの疑いがあると判断されて接続を拒否されているためである。(たぶん)

だから、携帯宛のメールについては諦めていたのだが自分がお世話になっている DDNSサービス 「Dynamic DO!.jp 」 のFAQに 「Q26. 携帯電話へメールが送れません。」という項目があって sendmail の場合には契約プロバイダ経由で送ればよいということが書いてあった。あ、そうか!直送するんじゃなくて一旦契約プロバイダを通せばいいんだという単純なことにここで初めて気が付いた。 qmail の場合の設定方法は書いてなかったのでいろいろ調べたら

http://www.f-bell.net/FreeBSD/mail_to_j-phone.html

でドンピシャの設定方法を発見した。
それによると 

プロバイダのsmtpサーバがたとえば smtp.your.provider.jp だとすると
設定ファイル /var/qmail/control/smtproutes に
たとえば j-phone,docomo,au に送信する場合のみ
外部 smtp サーバを設定するなら
 jp-k.ne.jp:smtp.your.provider.jp 
 jp-n.ne.jp:smtp.your.provider.jp
 docomo.ne.jp:smtp.your.provider.jp
 ezweb.ne.jp:smtp.your.provider.jp
こういう設定を行えばOKです。

*qmailのキューを削除
[[qmHandle>http://sourceforge.net/projects/qmhandle]]という便利なperlスクリプトがあるのでそれを利用。

http://sourceforge.net/projects/qmhandle から qmhandle-1.2.0.tar.gz をダウンロード。
winscp等で /usr/local/srcに移動
インストール(というか、単なるperlスクリプトなので解凍するだけ。)
 # cd /usr/local/src
 # mkdir qmhandle-1.2.0
 # mv qmhandle-1.2.0.tar.gz qmhandle-1.2.0/
 # cd qmhandle-1.2.0/
 # tar xfvz qmhandle-1.2.0.tar.gz
キューのメッセージIDを確認するには以下コマンド
 # ./qmHandle -l -N
キューを削除するには以下コマンド(-dとメッセージIDの間は空けない)
 # ./qmHandle -dメッセージID

*qmail自動起動設定
サーバ起動時に自動でqmailが立ち上がるように設定(tcpserverを使った起動)。以下のスクリプトを /etc/rc.d/init.d/以下に qmailという名前で作成。
 # vi /etc/rc.d/init.d/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.
     # 601…qmaildのuid
     # 600…nofilesのgid
     echo "Starting qmail."
     csh -cf '/var/qmail/rc &'
     tcpserver -v -u 601 -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/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/lock/qmail
     ;;
   *)
     echo "Usage: S99qmail {start|stop}"
     exit 1
 esac
 exit 0
上記起動スクリプトとリンクを張る。
 # ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc2.d/S99qmail
 # ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S99qmail
 # ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc5.d/S99qmail

*不正中継されていないかチェックできるサイト
[[CyBrain>http://www.cybrain.co.jp/index.html]]
目安箱バナー