qmail 便利なコマンド
- qmail-queue
受け取ったメールをキューに保存し、qmail-sendに配送を依頼する
- qmail-clean
クラッシュした時のキュー内の残っているごみファイルを削除します。
- qmail-qstat
現在キューにたまっているメールの数を表示
- qmail-qread
キューにたまっているメールの情報を表示
参考にしたURL: https://japanrock-pg.hatenablog.com/entry/20090414/1239695108
便利な機能
.qmail ファイル
ホームディレクトリに .qmail というファイルを 作成・編集することで、配送されてきたメールに対してさまざまなことができます。
./Maildir/
を.qmailファイルに記述することで、Maildir形式をるようできるようになります。パーミッション権限も調整が必要です。
注意事項: .qmail の処理は行単位で実行されてますが, たとえ文字が書かれてなくても その行をみて処理しようとして失敗します. また改行したところから行頭とみ なして正しい処理を行なってくれません. さらに, 行の処理は上から順々に行な われるので行の順序にも気をつけましょう.
.qmail ファイルの編集
- 空の行を作らない
- エディタ編集時にひとつの指示が数行にわたってしまうときでも改行はしてはいけない。
- .qmail のパーミッションは 600 にする
詳細は http://www.ep.sci.hokudai.ac.jp/~epnetfan/tebiki/server-mail/usage/dot-q...
qmail install FAQ
qmailのインストールなどに関するFAQ
インストール前の環境設定
参考にしたURL: https://www.atmarkit.co.jp/ait/articles/0109/04/news002_2.html
グループとユーザーの設定(インストール先が/var/qmailの場合)
# mkdir /var/qmail
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails
DNSサーバーにMXレコードが設定済みであること
IN MX 5 host.example.jp.
※テスト目的など、とりあえず動かしてみるだけならMXは必須ではありませんが、その場合[email protected]ではサーバへの配送は行われません。[email protected]のようなFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を用いてテストしてください。また、最低限host.example.jp自体はDNSに登録されている必要があります
qmailコンパイル時の設定
# make setup
# make check
# ./config
コンパイルは必ずgccを使用します。最後の./configは自ホストがDNSに登録されていない場合は、以下のエラーになります。
Your hostname is host.example.jp.
hard error
Sorry, I couldn't find your host's canonical name in DNS.
つまり、./config の設定は以下のようにします。
# ./config-fast host.example.jp
これで、/var/qmailにqmailの動作に必要なファイルやディレクトリが作成されます。
qmailのコントロールファイルの設定
/var/qmail/control の設定
defaultdomain
example.jp
※toヘッダなどにドメイン名が省略された場合、補完されるドメイン名
locals
localhost
localhost.example.jp
host.example.jp
example.jp
※受信するホスト名・ドメイン名:qmail-sendが利用
rcpthosts
localhost
example.jp
.example.jp
※受信するホスト名・ドメイン名:qmail-smtpdが利用
me
host.example.jp
※自サーバのFQDN
plusdomain
example.jp
※ドメイン部が+で終わっている場合に付加されるドメイン。「user@host+」なら「[email protected]」と置換される(qmal-injectが利用)
起動の準備
postmaster、MAILER-DAEMON、rootといった重要なアカウントに対する配信の設定です。
# cd /var/qmail/alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*
※postmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存されます。
qmailの動作検証
qmailサーバを起動してみましょう。ここで紹介する方法は、動作を確認するためのものです。実際の運用では、後半で紹介するtcpserverを使った起動方法を使ってください。
起動スクリプトを用意し、実行します。/var/qmail/boot/homeを/var/qmailにrcという名前でコピーします。
# cp /var/qmail/boot/home /var/qmail/rc
# /var/qmail/rc &
/etc/inetd.confファイルに次の行を追加してinetdデーモンを再起動
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
※もしほかに「smtp」で始まる行があれば「#」を行頭に付けてコメントアウト
# /etc/rc.d/init.d/inet restart
動作確認
# ps -aef | grep qmail
qmails 14540 13180 0 00:54 pts/4 00:00:00 qmail-send
qmaill 14541 14540 0 00:54 pts/4 00:00:00 splogger qmail
root 14542 14540 0 00:54 pts/4 00:00:00 qmail-lspawn ./Mailbox
qmailr 14543 14540 0 00:54 pts/4 00:00:00 qmail-rspawn
qmailq 14544 14540 0 00:54 pts/4 00:00:00 qmail-clean
テストメールの送信
# echo to: [email protected] | /var/qmail/bin/qmail-inject
これで、空のメールが/var/qmail/alias/のMailboxファイルに届いているはずです。
Maildirへの設定
/var/qmail/rcファイルの内容を下記のように編集します。
qmail-start ./Mailbox splogger qmail
↓
qmail-start ./Maildir/ splogger qmail
Mailboxでは各ユーザーのホームディレクトリにMailboxファイルが作成されますが、Maildirディレクトリは手動で生成します。
# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias /var/qmail/alias/Maildir
qmailでは、Maildirを使用するように設定するのに、手動で設定が必要です。 各ユーザーのアカウントで
$ /var/qmail/bin/maildirmake ~/Maildir
※root権限で実行した場合は、chownでMaildirディレクトリのオーナーが各ユーザーになるように変更します。
新規のユーザーについては、/etc/skelディレクトリにMaildirのひな型を置いておくと、adduserコマンドなどでユーザーを作成した際に自動でMaildirディレクトリが生成されるようになります。
# /var/qmail/bin/maildirmake /etc/skel/Maildir
Maildir対応版でqmailを起動し直します。現在起動している各qmailプロセスをkillコマンドで終了させ、psコマンドでqmailプロセスが残っていないことを確認してください。その後もう1度、起動させ、再度配送のテストで確認します。
# /var/qmail/rc &
# echo to: [email protected] | /var/qmail/bin/qmail-inject
※Maildir/newディレクトリにファイルが1つできています。