「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 File | Default | 使用されるプロセス | 用途 |
badmailfrom | N/A | qmail-smtpd | from アドレスのブラックリスト |
bouncefrom | MAILER-DAEMON | qmail-send | bounce sender のユーザ名 |
bouncehost | meと同様 | qmail-send | bounce sender のホスト名 |
concurrencylocal | 10 | qmail-send | ローカルへ同時転送可能な数 |
concurrencyremote | 20 | qmail-send | リモートへ同時転送可能な数 |
defultdomain | meと同様 | qmail-inject | デフォルトドメイン名 |
defaulthost | meと同様 | qmail-inject | デフォルトホスト名 |
databytes | 0 | qmail-smtpd | メッセージの最大バイト数 ( 0 = 無制限 ) |
doublebouncehost | meと同様 | qmail-send | ダブルバウンスのホスト名 |
doublebounceto | postmaster | qmail-send | ダブルバウンスを受けるユーザ |
envnoathost | meと同様 | qmail-send | @ マークがないアドレスの場合、デフォルトドメイン名 |
helohost | meと同様 | qmail-remote | SMTP HELOで使うホスト名 |
idhost | meと同様 | qmail-inject | Message-IDへ付与するホスト名 |
localiphost | meと同様 | qmail-smtpd | ローカル IP アドレスに変換するホスト名 |
locals | meと同様 | qmail-send | ローカルドメイン名 |
me | システムのFQDN | 多数 | デフォルトドメインの正式名称 |
morercpthosts | N/A | qmail-smtpd | セカンド rcpthosts database |
percenthack | N/A | qmail-send | % スタイルのリレー可能なドメイン |
plusdomain | meと同様 | qmail-inject | + に使われるドメイン名 |
qmqpservers | N/A | qmail-qmqpc | QMQPサーバの IPアドレス |
queuelifetime | 604800 | qmail-send | メッセージがキューに保存される時間(秒) |
rcpthosts | N/A | qmail-smtpd | メール受診を許可するドメイン |
smtpgreeting | meと同様 | qmail-smtpd | SMTPの挨拶メッセージ |
smtproutes | N/A | qmail-remote | SMTPの転送先、Qmailに着いたメールを指定されたところへ転送する |
timeoutconnect | 60 | qmail-remote | SMTPの接続を待つ時間(秒) |
timeoutremote | 1200 | qmail-remote | リモートサーバを待つ時間(秒) |
timeoutsmtpd | 1200 | qmail-smtpd | SMTPクライアントを待つ時間(秒) |
virtualdomains | N/A | qmail-send | 仮想ドメインとユーザ名 |
Qmail は locals ⇒ virturaldomains 順に処理する。したがって、locals に記載されたドメインを virtualdomains に記載するとエラーになる。
自分の Qmail smtp サーバが遅いと思う場合:
基本的に tcpserver はすべての IP アドレスの DNS と ident をチェックするようになっているため、応答時間によって速度に差が出てしまう。
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 ~]
コメント