Qmail IMAP over SSLQmail over SSLSMTP over SSL

Qmail over SSL でメール通信を暗号化する〜第 6 篇:詳細設定・運用〜|CentOS 7

qmail-setup-tuning Qmail
スポンサーリンク

「Qmail over SSL でメール通信を暗号化する」は6編に分けてあります。他の記事は ▼ をご参照ください。

Qmail 詳細設定

性能の調整:あくまでも参考値であり、それぞれをモニタリングして、適切な値を見つける必要があります。

echo 86400 > /var/qmail/control/queuelifetime
echo 200 > /var/qmail/control/concurrencylocal
echo 500 > /var/qmail/control/concurrencyremote
echo 30 > /var/qmail/control/timeoutconnect

Qmail で許可するドメインを指定します。

vi /var/qmail/control/rcpthosts
mail.example.com
example1.com
example2.com

SMTP Route を設定して違法にリレーされることを防止します。

vi /var/qmail/control/smtproutes

# 書式:domain.com:mail-server.com
mail.example.com:localhost
example1.com:[123.123.123.10]
example2.com:[123.123.123.10]

example3.com を他のメールサーバ(124.124.124.10)にリレーする場合、以下のように記入します。

# 書式:domain.com:some-other-mail-server.com
example3.com:[124.124.124.10]

利用可能な Qmail制御ファイル ( Control File )

各制御ファイルは必要なときにそれぞれ作成して設定したい値を入力しておけば有効になります。/var/qmail/bin/qmail-showctl コマンドの実行結果を見ながら調整するのもいいでしょう。

Control FileDefault使用されるプロセス用途
badmailfromN/Aqmail-smtpdfrom アドレスのブラックリスト
bouncefromMAILER-DAEMONqmail-sendbounce sender のユーザ名
bouncehostmeと同様qmail-sendbounce sender のホスト名
concurrencylocal10qmail-sendローカルへ同時転送可能な数
concurrencyremote20qmail-sendリモートへ同時転送可能な数
defultdomainmeと同様qmail-injectデフォルトドメイン名
defaulthostmeと同様qmail-injectデフォルトホスト名
databytes0qmail-smtpdメッセージの最大バイト数 ( 0 = 無制限 )
doublebouncehostmeと同様qmail-sendダブルバウンスのホスト名
doublebouncetopostmasterqmail-sendダブルバウンスを受けるユーザ
envnoathostmeと同様qmail-send@ マークがないアドレスの場合、デフォルトドメイン名
helohostmeと同様qmail-remoteSMTP HELOで使うホスト名
idhostmeと同様qmail-injectMessage-IDへ付与するホスト名
localiphostmeと同様qmail-smtpdローカル IP アドレスに変換するホスト名
localsmeと同様qmail-sendローカルドメイン名
meシステムのFQDN多数デフォルトドメインの正式名称
morercpthostsN/Aqmail-smtpdセカンド rcpthosts database
percenthackN/Aqmail-send% スタイルのリレー可能なドメイン
plusdomainmeと同様qmail-inject+ に使われるドメイン名
qmqpserversN/Aqmail-qmqpcQMQPサーバの IPアドレス
queuelifetime604800qmail-sendメッセージがキューに保存される時間(秒)
rcpthostsN/Aqmail-smtpdメール受診を許可するドメイン
smtpgreetingmeと同様qmail-smtpdSMTPの挨拶メッセージ
smtproutesN/Aqmail-remoteSMTPの転送先、Qmailに着いたメールを指定されたところへ転送する
timeoutconnect60qmail-remoteSMTPの接続を待つ時間(秒)
timeoutremote1200qmail-remoteリモートサーバを待つ時間(秒)
timeoutsmtpd1200qmail-smtpdSMTPクライアントを待つ時間(秒)
virtualdomainsN/Aqmail-send仮想ドメインとユーザ名

Qmaillocalsvirturaldomains 順に処理する。したがって、locals に記載されたドメインを virtualdomains に記載するとエラーになる。

自分の Qmail smtp サーバが遅いと思う場合:
基本的に tcpserver はすべての IP アドレスの DNSident をチェックするようになっているため、応答時間によって速度に差が出てしまう。
tcpserver -H -R オプションを使うと、チェックしなくなるので速度が上がります。( 本スクリプトでは反映済み )

キューのライフタイムを変更

7日 ( 604800 ) → 1日 ( 86400 ) に変更する場合、

# queuelifetime: (Default.) Message lifetime in the queue is 604800 seconds.

echo '86400' > /var/qmail/control/queuelifetime

Concurrencylocal & concurrencyremote

※ concurrencylocal: (Default.) Local concurrency is 10.
※ concurrencyremote: (Default.) Remote concurrency is 20.

echo 200 > /var/qmail/control/concurrencylocal
echo 800 > /var/qmail/control/concurrencyremote

timeoutconnect

※ timeoutconnect: (Default.) SMTP client connection timeout is 60 seconds.
echo '30' > /var/qmail/control/timeoutconnect

Qmail 運用

daemontools に登録されたサービスを終了する

cd /service/qmail
rm -f /service/qmail
svc -dx . log

cd /service/smtpd
rm -f /service/smtpd
svc -dx . log

cd /service/smtps
rm -f /service/smtps
svc -dx . log

daemontools サービスを再度スタートするなら、リンクをかけて置きましょう。

Qmail を一時中止させる ( pause )

svc -p /service/qmail
svc -p /service/smtpd
svc -p /service/smtps

一時中止からスタートさせる ( continue )

svc -c /service/qmail
svc -c /service/smtp
svc -c /service/smtps

※ svc のオプション:-u (up), -d (down), -o (once), -p (pause), -c (continue), -h (hangup),-k (kill)

Qmail キューのステータスを確認

/var/qmail/bin/qmail-qstat

messages in queue: 0
messages in queue but not yet preprocessed: 0

Qmail キューのメールを強制配送

svc -a /service/qmail

qmHandle で管理する

qmHandle –help でオプションが確認できます。主に、qmHandle -l でキューを確認して、qmhandle -a コマンドで全て送信させたりします。

cd /usr/local/src
wget https://osdn.net/projects/sfnet_qmhandle/downloads/qmhandle-1.3/qmhandle-1.3.2/qmhandle-1.3.2.tar.gz
cd qmhandle-1.3.2
cp ./qmHandle /var/qmail/bin/

Qmail Delivery Test

全ての送信テストのログは /var/log/qmail/current で確認できます。

Local-local Test

empty message を送信する。

echo to: naru | /var/qmail/bin/qmail-inject

Local-error Test

存在しないローカルアドレスにメッセージを送信する。
You will now have a bounce message in your mailbox.

echo to: nonexistent | /var/qmail/bin/qmail-inject

Local-remote Test

外部に有効なアカウントにメールを送信

echo to: your-id@gmail.com | /var/qmail/bin/qmail-inject

Local-postmaster Test

大文字と小文字の区別なく postmaster にメール送信可能

echo to: POSTmaster | /var/qmail/bin/qmail-inject
/var/qmail/bin/qmail-inject -f nonexistent To: unknownuser
Subject: testing

This is a test. This is only a test.

Ctrl+d

SMTP Server Test

[root@centos7 ~]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 example.com ESMTP
helo dude
250 example.com
mail naru@example.com
250 ok
rcpt naru@example.com
250 ok
data
354 go ahead
subject: testing
this is a test...
.
250 ok 1559104724 qp 19451
quit
221example.com
Connection closed by foreign host.

[root@centos7 ~]
スポンサーリンク

コメント

タイトルとURLをコピーしました