tomimemo
qmailメモ
最終更新:
匿名ユーザー
-
view
インストール
参考:http://www.asahi-net.or.jp/~aa4t-nngk/qmail.html
参考:http://itbtech.itboost.co.jp/inst/inst_08.php
参考:http://itbtech.itboost.co.jp/inst/inst_08.php
まず、qmailホームディレクトリを作成。
# mkdir /var/qmail
次にqmailのプロセスが使用するgroupとuserを作成。
(gidとuidを600番台とするが自由)
(gidとuidを600番台とするが自由)
# groupadd -g 600 nofiles # groupadd -g 601 qmail (以下改行されてるけど1行で記述する) # 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
DL先 http://qmail.org/netqmail-1.05.tar.gz
必要なパッチを以下からダウンロード。
- netqmail-1.05-smtpd-auth-0.31.patch
DL先 http://www.asahi-net.or.jp/~aa4t-nngk/codes/netqmail-1.05-smtpd-auth-0.31.patch - qmail-date-localtime.patch
DL先 http://www.asahi-net.or.jp/~aa4t-nngk/codes/qmail-date-localtime.patch
上記ファイルを/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とか)
サーバホスト名は環境に合わせる(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 の以下の部分を編集。
/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ファイルの内容を下記のように編集。
コピーした/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をインストール。以下からソースダウンロードして/usr/local/srcにコピー。
ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz
ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz
インストール開始。
# 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 コマンドで確認できる)
(一行で記述。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宛のメールを受け取るには
qmailでは,rootは直接メールを受取ることができない。そこで、.qmail-rootでroot宛のメールを受取る人(のメールアドレス)(複数の宛先指定可能)を書く。フォーマットは以下。
&hoge &hoge1@hogehoge.hoge &hoge2@hogehoge.hoge
qmailの管理ツール
queue の内容をリストにして表示。
/var/qmail/bin/qmail-qread
DDNS+qmailで携帯にメールが送れない対策
(DDNS) ダイナミックDNS を使用してメールサーバを立ち上げていると、携帯宛にメールが送れない。もうずっと前から気が付いていたので、いつも携帯宛に送るときだけはメーラの設定を自SMTPサーバではなく、契約プロバイダの SMTPサーバを指定して送信していた。
最近は携帯各社の迷惑メール対策が厳しく行われているため、DDNSなどから接続した IP アドレスを逆引きしたドメイン名とメールサーバのドメイン名が異なる場合には SPAMメールの疑いがあると判断されて接続を拒否されているためである。(たぶん)
だから、携帯宛のメールについては諦めていたのだが自分がお世話になっている DDNSサービス 「Dynamic DO!.jp 」 のFAQに 「Q26. 携帯電話へメールが送れません。」という項目があって sendmail の場合には契約プロバイダ経由で送ればよいということが書いてあった。あ、そうか!直送するんじゃなくて一旦契約プロバイダを通せばいいんだという単純なことにここで初めて気が付いた。 qmail の場合の設定方法は書いてなかったのでいろいろ調べたら
でドンピシャの設定方法を発見した。
それによると
それによると
プロバイダのsmtpサーバがたとえば smtp.your.provider.jp だとすると
設定ファイル /var/qmail/control/smtproutes に
たとえば j-phone,docomo,au に送信する場合のみ
外部 smtp サーバを設定するなら
設定ファイル /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という便利なperlスクリプトがあるのでそれを利用。
http://sourceforge.net/projects/qmhandle から qmhandle-1.2.0.tar.gz をダウンロード。/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
不正中継されていないかチェックできるサイト
メール配送失敗した場合の返送先を指定
/var/qmail/control内にbouncefromというファイルを作成。記述方法は返送先usernameを記述するだけ。デフォルトは、MAILER-DAEMON。
または、/var/qmail/alias/.qmail-mailer-daemonファイルに配送先を以下のように指定。
# vi /var/qmail/alias/.qmail-mailer-daemon &hoge &hoge@hogehoge.com
qmailの設定ファイルの説明
qmailインストール時に /var/qmail/control/ 以下に以下のようなqmailの設定ファイルが作成される。最低限必要なのはmeだけらしい。
me plusdomain locals defauldomain rcpthosts
■me
そのメイルサーバとなっているホストの名前。
記述例:mail.hoge.com
そのメイルサーバとなっているホストの名前。
記述例:mail.hoge.com
■defaultdomain
省略時ドメイン名。設定されていない場合はmeと同じ値に設定される。ドットがないホスト名が設定されたときは、この値を追加してくれる。例:hoge@mail→hoge@mail.hoge.com
記述例:hoge.com
省略時ドメイン名。設定されていない場合はmeと同じ値に設定される。ドットがないホスト名が設定されたときは、この値を追加してくれる。例:hoge@mail→hoge@mail.hoge.com
記述例:hoge.com
■locals
そのメイルサーバがローカルとして処理するドメイン名の一覧。一行にひとつずつ書く。省略されるとmeを使うが、どちらもなければqmail-sendは起動されないない。user@domainというアドレスはdomainがlocalsにあるときローカルだと判定される。メイルアドレスが hoge@host.domain.net ではなくhoge@domain.net という風に設定したいときには最低限 domain.net はlocalに設定されていなければいけない。
そのメイルサーバがローカルとして処理するドメイン名の一覧。一行にひとつずつ書く。省略されるとmeを使うが、どちらもなければqmail-sendは起動されないない。user@domainというアドレスはdomainがlocalsにあるときローカルだと判定される。メイルアドレスが hoge@host.domain.net ではなくhoge@domain.net という風に設定したいときには最低限 domain.net はlocalに設定されていなければいけない。
■rcpthosts
SMTPのRCPTに現れてよいドメイン名。rcpthostsに載っていないドメイン宛のメイルは受け取らない。ここで環境変数RELAYCLIENTが設定されているときには、rcpthostsを無視して、qmail-smtpdはすべてのメイルを受け付けるようになる。
SMTPのRCPTに現れてよいドメイン名。rcpthostsに載っていないドメイン宛のメイルは受け取らない。ここで環境変数RELAYCLIENTが設定されているときには、rcpthostsを無視して、qmail-smtpdはすべてのメイルを受け付けるようになる。
qmailの詳しい説明サイト
ユーザ追加時に自動でMaildirを生成
useraddコマンドで新規にユーザを作成したときに自動でMaildirを作成するには以下のコマンドを叩く。RedHatLinuxで確認。
/var/qmail/bin/maildirmake /etc/skel/Maildir echo ./Maildir/ > /etc/skel/.qmail