qmailメモ - (2005/11/30 (水) 10:39:15) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
#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]]
*メール配送失敗した場合の返送先を指定
/var/qmail/control内にbouncefromというファイルを作成。記述方法は返送先usernameを記述するだけ。デフォルトは、MAILER-DAEMON。
または、/var/qmail/alias/.qmail-mailer-daemonファイルに配送先を以下のように指定。
# vi /var/qmail/alias/.qmail-mailer-daemon
&hoge
&hoge@hogehoge.com
#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]]
*メール配送失敗した場合の返送先を指定
/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の詳しい説明サイト
http://www.cla.kobe-u.ac.jp/Jouhou/96/miyake/sotsuron/4syou.htm
表示オプション
横に並べて表示:
変化行の前後のみ表示: