Custom Search

JITAKU_SVR_Wiki



qmail

インストール後の基本ディレクトリやパラメータは以下。

今回構築するqmailのバージョンは
net-qmail-1.0.6
※中身はqmail-1.03

net-qmail-1.0.6のインストール、設定については以下の方を参考にテスト。
http://d.hatena.ne.jp/cat-o-ninetail/

DL_URL(qmail):http://www.icewalkers.com/download/qmail/1473/dls/
DL_URL(net-qmail):http://qmail.org/netqmail/

必要なパッチのDL

qmail-103.patch
http://www.ckdhr.com/ckd/qmail-103.patch
512バイトを超えるDNS応答のパケットを取り扱えるようにするパッチ。
(MXレコードを引いたときに512バイト以上のデータでのやりとりが必要な場合はTCPでのアクセスになる。
この対応がqmailのみだとエラーになって受けとることが出来ない。)

qmail-date-localtime.patch
http://www.asahi-net.or.jp/~aa4t-nngk/codes/qmail-date-localtime.patch
標準では GMT のみしか扱えないらしいので、JST で運用するにはこのパッチが必要らしい。
日本時間に合わせるため+09:00する

qmail-smtpd-relay-reject
http://www.qmail.org/qmail-smtpd-relay-reject
メールアドレスの "@" 以前のユーザアカウント部分に "@", "!", "%" が含まれているメールを拒否するためのパッチ。
relay-test.mail-abuse.orgなどの不正中継チェックで引っかかるらしい。

netqmail-1.05-tls-smtpauth-20070417.patch
http://www.asahi-net.or.jp/~aa4t-nngk/codes/netqmail-1.05-smtpd-auth-0.31.patch
その名の通り、 TLS や SMTP-AUTH に対応するためのパッチ。
パッチ本体に記載されている通り、色んな人が公開してた個々のパッチを一つにまとめたもの。

後から必要となった場合には再コンパイルする必要があるので、上記のパッチは念のため先に当てておくことをお勧め。



インストール

インストール用ディレクトリ作成 & ユーザ、グループ作成

# mkdir /var/qmail

# groupadd -g 1001 nofiles

# groupadd -g 1002 qmail

# useradd -u 2000 -g nofiles -s /sbin/nologin -d /var/qmail/alias alias

# useradd -u 2001 -g nofiles -s /sbin/nologin -d /var/qmail qmaild

# useradd -u 2002 -g nofiles -s /sbin/nologin -d /var/qmail qmaill

# useradd -u 2003 -g nofiles -s /sbin/nologin -d /var/qmail qmailp

# useradd -u 2004 -g qmail -s /sbin/nologin -d /var/qmail qmailq

# useradd -u 2005 -g qmail -s /sbin/nologin -d /var/qmail qmailr

# useradd -u 2006 -g qmail -s /sbin/nologin -d /var/qmail qmails

UID、GIDは出来れば指定しておくと後々便利かもしれない。

パッチ当て

# cd /usr/local/src

# wget http://qmail.org/netqmail-1.06.tar.gz

# wget 各パッチ

# tar zxvf netqmail-1.06.tar.gz

# cd netqmail-1.06

# patch < ../netqmail-1.05-smtpd-auth-0.31.patch

# patch < ../qmail-date-localtime.patch

# patch < ../qmail-103.patch

# patch < ../qmail-smtpd-relay-reject

# make man

# make setup check

# ./config-fast `hostname`

# cd /var/qmail/alias

# echo "&postmaster@hogehoge.com" > .qmail-postmaster

# echo "&postmaster@hogehoge.com" > .qmail-mailer-daemon

# echo "&postmaster@hogehoge.com" > .qmail-root

# chmod 644 .qmail*

起動スクリプトが用意されているのでこれを使用する。
Mailbox形式になっているためMaildir形式に変更する。

# cp -p /usr/local/src/netqmail-1.06/home /var/qmail/rc

# sed -i "s#Mailbox#Maildir/#" /var/qmail/rc

詳細

# more home
#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Mailbox splogger qmail
# =>qmail-start ./Mailbox splogger qmail
# この行を qmail-start ./Maildir/ splogger qmail に変更する。

tcpserverのインストール

tcpserverとは、
DLURL:http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
・同時接続数の制限ができる
・指定されたポートを監視して、外部からのTCP接続を受け付ける
・TCP接続があった場合、対応するサービスを起動する
・接続元によって受け付けの許可・不許可の制御を行うことができる
・アクセス制御のルールにハッシュ化されたデータベース(cdb)を用いるため、大規模になっても高速に処理できる
・inetd は1プロセスで複数のポートの受け付けが行えるが、tcpserver は1プロセスにつき、1ポートの受け付けのみ行える

基本的にメールを送信する制御プログラムだと思えば良い。

ucspi-tcp-0.88(tcpserver)

# cd /usr/local/src

# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

# tar xfzv ucspi-tcp-0.88.tar.gz

# cd ucspi-tcp-0.88

# patch < ../netqmail-1.06/other-patches/ucspi-tcp-0.88.errno.patch

# make setup check

普通に展開してインストールするとエラーが出る。パッチがnetqmail-1.06同胞されているので、このパッチを使用する。

実際にメールを送信する

tcp.smtp.cdbの作成

qmailでメールを送信するにはtcp.smtp.cdbが必要になる。
このファイルは非常に重要で、不正中継をさせないためのファイル。

/etc/tcp.smtp.cdbを作成する。
ここに書かれていない相手からのメールは基本全て拒否する。
このファイルがないとメールを送信することは出来ない。

/etc/tcp.smtp.cdbを作成するには、/etc/tcp.smtpファイルを作成し、許可する相手を記述する。

# cat /etc/tcp.smtp

192.168.0.:allow,RELAYCLIENT=""
172.16.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
:allow

tcp.smtp.cdbを作成する。

# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

起動スクリプト

次にtcpserver経由でsmtpを起動させるために以下のスクリプトを使用する。
qmailを起動するには、まずデフォルトで動いているsmtpを停止させる必要がある。

# /etc/init.d/sendmail stop
sm-client を停止中: [ OK ]
sendmail を停止中: [ OK ]

# chkconfig sendmail off

実際に起動させてみる。

# /etc/init.d/qmail start

# ps -ef |grep qmail
qmails 2162 1 0 18:04 pts/1 00:00:00 qmail-send
qmaill 2163 2162 0 18:04 pts/1 00:00:00 splogger qmail
root 2164 2162 0 18:04 pts/1 00:00:00 qmail-lspawn ./Maildir/
qmaild 2165 1 0 18:04 pts/1 00:00:00 tcpserver -v -u 2001 -g 1001 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd /var/qmail/bin/splogger smtpd 3
qmailr 2167 2162 0 18:04 pts/1 00:00:00 qmail-rspawn
qmailq 2168 2162 0 18:04 pts/1 00:00:00 qmail-clean
root 2205 28935 0 18:06 pts/1 00:00:00 grep qmail

tcpserver経由でsmtpが起動していることが分かる。
上記のように出来上がればテストメールを送信してみる。

# mail -s "testmail" xxxxxxx@hogehoge.com
test
.
Cc:

問題なくメールが送信されていれば完了。
以上で基本的なqmailの動作を確認できた。

トラブルシュート

fatal: unable to bind: address already used

既に同様のサービスが立ち上がっているとsmtpがぶつかって起動するがサービス提供されない。
sendmailやpostfixが上がっていないことを確認する。

その他

http://d.hatena.ne.jp/cat-o-ninetail/
http://www.asahi-net.or.jp/~wv7y-kmr/memo/tcpserver.html
http://www.asahi-net.or.jp/~aa4t-nngk/qmail.html
http://www3.atwiki.jp/tmogmni/pages/26.html#id_f72898d7


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-22 (火) 14:01:33 (702d)