qmail FAQ

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つできています。

 

 

 

 

 

タグ: 

オープンソースソフトウェア: