qmailはモジュール構成になっていて、各モジュール単位に役割分担しています。qmailのコマンドとそのコマンドによって実行されるプロセスについて整理しました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
qmail-start
○構文
qmail-start [デフォルト配送方式 [ロガー 引数]]
・qmail-startは、下記デーモンを開始させる。
qmail-send,qmail-lspawn,qmail-rspawn,qmail-clean
・それぞれのデーモンを適切なユーザーID、グループIDで開始させる。
・ロガーが指定された場合は、qmail-sendの出力を受け取り、ロガーに引き渡す。
・配送方式が指定された場合は、それをqmail-lspawnに引き渡す。
○実行例
私の環境では、qmailの起動スクリプトが下記のようになっています。
qmail-start ./Maildir/
qmai-startによって起動されたデーモンは下記のようになっています。
qmail-start [デフォルト配送方式 [ロガー 引数]]
・qmail-startは、下記デーモンを開始させる。
qmail-send,qmail-lspawn,qmail-rspawn,qmail-clean
・それぞれのデーモンを適切なユーザーID、グループIDで開始させる。
・ロガーが指定された場合は、qmail-sendの出力を受け取り、ロガーに引き渡す。
・配送方式が指定された場合は、それをqmail-lspawnに引き渡す。
○実行例
私の環境では、qmailの起動スクリプトが下記のようになっています。
qmail-start ./Maildir/
qmai-startによって起動されたデーモンは下記のようになっています。
qmails 19228 6288 0 Mar20 ? 00:00:00 qmail-send root 19232 19228 0 Mar20 ? 00:00:00 qmail-lspawn ./Maildir/ qmailr 19233 19228 0 Mar20 ? 00:00:00 qmail-rspawn qmailq 19234 19228 0 Mar20 ? 00:00:00 qmail-clean
qmail-lspawnに./Maildir/が渡されています。
qmail-clean
・qmail-cleanは、キューディレクトリーをクリーンアップする。
・手動でqmail-cleanは実行しない。
・手動でqmail-cleanは実行しない。
qmail-send
・qmail-sendは、qmail-queueによってキューに保持されたメールを受け取り、ローカル宛てのメールはqmail-lspawn、リモート宛てのメールはqmail-rspawnに引き渡す。
・qmail-sendは、下記設定ファイルを読み込み、設定内容に応じた動作をする。
/var/qmail/control/配下の下記設定ファイル
bauncefrom,bauncehost,concurrencylocal,concurrencyromote,
doublebouncehost,doublebounceto,envnoathost,locals,
percenthack,queuelifetime,virtualdomains
・qmail-sendは、qmail-startによって自動で起動されるので手動で起動させない。
・qmail-sendは、下記設定ファイルを読み込み、設定内容に応じた動作をする。
/var/qmail/control/配下の下記設定ファイル
bauncefrom,bauncehost,concurrencylocal,concurrencyromote,
doublebouncehost,doublebounceto,envnoathost,locals,
percenthack,queuelifetime,virtualdomains
・qmail-sendは、qmail-startによって自動で起動されるので手動で起動させない。
qmail-lspawn
・qmail-lspawnは、qmail-sendからコマンドを受け取る。
・/var/qmail/users/cdbを参照し、送信先のメールアドレスのユーザが含まれているか確認する。
・上記で含まれていなければ、qmail-getpwでサーバー内のローカルユーザーを確認する。
・qmail-lspawnは、qmail-startによって自動で起動されるので手動で起動させない。
※1 /var/qmail/users/cdb
・/var/qmail/users/cdbは、qmail-newuによって作成される。
・qmail-newuは、/var/qmail/users/assignファイルを読み込んで/var/qmail/users/cdbを作成する。
●使用例
・/var/qmail/users/cdbを参照し、送信先のメールアドレスのユーザが含まれているか確認する。
・上記で含まれていなければ、qmail-getpwでサーバー内のローカルユーザーを確認する。
・qmail-lspawnは、qmail-startによって自動で起動されるので手動で起動させない。
※1 /var/qmail/users/cdb
・/var/qmail/users/cdbは、qmail-newuによって作成される。
・qmail-newuは、/var/qmail/users/assignファイルを読み込んで/var/qmail/users/cdbを作成する。
●使用例
# cd /var/qmail/users # vi assign =test-wp.home:test-wp:502:502:/home/test-wp:-:home: +test-wp.work:test-wp:502:502:/home/test-wp:-:work: . # cd /var/qmail/bin # ./qmail-newu # ls /var/qmail/users/ assign cdb
※2 qmail-getpw
○構文
qmail-getpw ‘local’
○リターン値
‘local’を管理するユーザー名
上記ユーザーのユーザーID
上記ユーザーのグループID
上記ユーザーのホームディレクトリ
‘local’が拡張アドレスの場合は、ダッシュ
‘local’が拡張アドレスの場合は、拡張名
●実行例
# /var/qmail/bin/qmail-getpw test-wp | od -c 0000000 t e s t - w p \0 5 0 2 \0 5 0 2 \0 0000020 / h o m e / t e s t - w p \0 \0 \0
qmail-local
○構文
qmail-local [-nN] user hmdir local dash ext domain sender defaultdelivery
-n:メールを配信せずに確認する。
-N:デフォルト。メールを配信する。
user:配信先のユーザー名
hmdir:ホームディレクトリ
local:受信メールアドレスの@より左部
dash:拡張アドレスの場合は、”-“を指定
ext:拡張アドレスの拡張名
domain:受信アドレスのドメイン部
sender:送信メールアドレス
defaultdelivery:デフォルトの配送方式
・qmail-localは、メールメッセージを標準入力から読み、ローカルのユーザーに配送。
・qmail-localは、qmail-lspawnによって実行される。
●実行例
qmail-local [-nN] user hmdir local dash ext domain sender defaultdelivery
-n:メールを配信せずに確認する。
-N:デフォルト。メールを配信する。
user:配信先のユーザー名
hmdir:ホームディレクトリ
local:受信メールアドレスの@より左部
dash:拡張アドレスの場合は、”-“を指定
ext:拡張アドレスの拡張名
domain:受信アドレスのドメイン部
sender:送信メールアドレス
defaultdelivery:デフォルトの配送方式
・qmail-localは、メールメッセージを標準入力から読み、ローカルのユーザーに配送。
・qmail-localは、qmail-lspawnによって実行される。
●実行例
# ./qmail-local -n test-wp /home/test-wp test-wp-home - home example.com admin@example.com ./Maildir/ forward test-wp did 0+1+0
did 0+1+0 の意味はよく分かりませんが、エラーが表示されず、
forward test-wp
と表示されているので問題ないようです。
qmail-rspawn
・qmail-rspawnは、qmail-startによって開始される。
・qmail-rspawnは、qmail-sendからコマンドを受け取る。
・qmail-rspawnは、標準入力からリモート配送コマンドを読み込み、qmail-remoteに配送を依頼し、配送結果を標準出力にレポートする。
・qmail-rspawnは、qmail-startによって自動で起動されるので手動で起動させない。
・qmail-rspawnは、qmail-sendからコマンドを受け取る。
・qmail-rspawnは、標準入力からリモート配送コマンドを読み込み、qmail-remoteに配送を依頼し、配送結果を標準出力にレポートする。
・qmail-rspawnは、qmail-startによって自動で起動されるので手動で起動させない。
qmail-remote
○構文
qmail-remote host sender recip
○引数
host:配送先のホスト名
sender:エンベロープ送信者アドレス
recip:エンベロープ受信者アドレス
○レポートコード
r:ホストが受信を許可
h:ホストが受信を永久に拒否
s:ホストが一時的に受信を拒否
K:ホストが受信者へのメッセージ配送を許可
Z:一時的な失敗
D:パーマネントエラー
・qmail-remoteは、メールメッセージを標準入力から読み、SMTPで引数の”host”、”recip”宛てに配送する。
・qmail-remoteは、qmail-rspawnによって実行される。
●実行例
qmail-remote host sender recip
○引数
host:配送先のホスト名
sender:エンベロープ送信者アドレス
recip:エンベロープ受信者アドレス
○レポートコード
r:ホストが受信を許可
h:ホストが受信を永久に拒否
s:ホストが一時的に受信を拒否
K:ホストが受信者へのメッセージ配送を許可
Z:一時的な失敗
D:パーマネントエラー
・qmail-remoteは、メールメッセージを標準入力から読み、SMTPで引数の”host”、”recip”宛てに配送する。
・qmail-remoteは、qmail-rspawnによって実行される。
●実行例
# vi msg From: from@from-example.com To: to@to-example.com Subject: testmail This is Test. # ./qmail-remote ipone.ne.jp from@from-example.com to@to-example.com < msg rK192.168.0.1 accepted message. Remote host said: 250 2.0.0 xxxxxxx-1 Message accepted for delivery
レポートコードが"rk"となっていますので、問題なく配送できています。
-
notqmailの構築
- CentOS Stream9にnotqmailを構築
- お名前.comでメールサーバー関連のDNS設定
- qmailをインストールし、SMTPサーバ構築
- qmailでPOPサーバ構築
- daemontoolsでqmailのプロセスとログの管理を行う
- qmailの制御スクリプトを作成
- qmailの各コマンド、プロセスについてまとめました
- 特定の送信元メールアドレスを拒否
- 受信メッセージのサイズを制限
- サブドメインなど複数のドメイン名でメール受信できるようにする
- デフォルト設定を含めた設定一覧をコマンドで表示
- メールアドレスのユーザー部のエイリアス設定
- ユーザーへメールアドレスを追加割り当てする方法
- 拡張アドレスを使って簡単にメールアドレスを追加割り当て
- 自端末からVPSサーバー上のメールサーバー経由(SMTPリレー)でメールを送信
- qmail pop before smtpを使って自ドメインのメール送信
- 最大接続数の設定
- バウンスメール(リターンメール、エラーメール)の設定
- キューの設定とキューの管理
- タイムアウト設定
- ユーザー単位に配送タイプ(mbox、maildir)を指定
- .qmailファイルを使ってユーザー単位に配送制御
- 拡張アドレスを使ってメールアドレス割当て追加
- qmailのログの確認方法
- qmailでmaildir形式のメールボックスをmbox形式へ変換するには?
- /var/qmail/aliasのディスク使用量が増加、大量メールの削除方法
- yumによるpostfixのアップデート後、qmailのメール送信ができなくなる
qmailサーバーの構築
qmailの設定
qmailの運用