qmailのインストール
qmail、netqmail, notqmail などのインストール方法
qmail 1.03 によるインストール
環境:
このインストール作業は、以下のサイトを参考にしました。
- 「メールサーバ構築(qmail,dovecot)」http://www.ep.sci.hokudai.ac.jp/~epmail/y2017/dvlop/qmail.html
- [ITPASS2018]qmail のインストールと設定 https://itpass.scitec.kobe-u.ac.jp/hiki/hiki.cgi?%5BITPASS2018%5Dqmail+%...
- 「qmail/vpopmailのインストール」http://www.ryouto.jp/linux/index.html
- 「qmailによるSMTPサーバの構築」 https://atmarkit.itmedia.co.jp/ait/articles/0109/04/news002_2.html
- 「連載記事 「実用qmailサーバ運用・管理術」」https://atmarkit.itmedia.co.jp/flinux/index/indexfiles/qmailindex.html
環境
qmail 1.03+ vpopmail + ezmlm + ezmlm-idx
Debian 10 buster で、2021年7月25日に実施。なるべく2021年7月時点での最新版ソースを使ったインストールになります。
事前に、Psotfixやexim4などのSMTPサーバーがアンインストールされていることを確認して、インストールしました。
設定サンプルとして、サーバー名 host.example.jp ホスト名 host ドメイン名 example.jp で説明します。
opensslの導入
opensslのインストール
事前にSSL証明書(インストールしたサーバー独自の)をインストールした環境で行います。
例えば、OpenSSLを使って、秘密鍵、サーバー証明書、公開鍵など。OpenSSLはqmail関連のソースプログラムと連携するために、コンパイルする関係でソースからコンパイルしてインストールします。
OpenSSLのソースダウンロード: https://www.openssl.org/source/ にて最新版をダウンロード $ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
openssl-OpenSSL_1_1_1kのダウンロードとインストール
不明 ーー>
qmailadminをインストールするために、Webサーバー(Apache)とSSL証明書を設定します。サーバーのIPアドレスでSSL証明書を使う場合はサーバー自身の証明書を使い、もし、ドメイン名でSSL証明書を使う場合は、Let’s Encryptの https://certbot.eff.org/ を設定してからインストールします。 今回はサーバーのIPアドレスを使う方法でインストールします。
<ーー ここまで
$ tar zxvf openssl-1.1.1k.tar.gz
$ cd openssl-1.0.1k
$ ./config --prefix=/usr --openssldir=/usr/local/openssl shared
$ make
$ sudo make install
ucspi-tcpのソースパッケージにsslのパッチを適用
ucspi-tcpソースのダウンロード: $ wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
参考資料: tcpserverやucspi-tcp関連の情報 http://www.emaillab.org/djb/tools/ucspi-tcp/top.html
ダウンロード後、tar.gzを展開し、続けてSSL化パッチとその他のパッチをダウンロード
- $ wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.a_record.patch
- $ wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch
- $ wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz
$ gzip -d ucspi-tcp-ssl-20050405.patch.gz
ucspi-tcpにパッチを適用する
$cd ucspi-tcp-0.88
- $ patch -p0 < ../ucspi-tcp-ssl-20050405.patch
- $ patch -p1 < ../ucspi-tcp-0.88.a_record.patch
- $ patch -p1 < ../ucspi-tcp-0.88.nobase.patch
- $ make実行 make
tcpserver実行ファイルをコピーする
$ sudo cp tcpserver /usr/local/bin/tcpserver-ssl
- - -
※以下の作業はnetqmailのインストール時にも実行させているので重複を確認する
smtp over ssl を使用する場合のために, qmail にsmtp-auth のパッチをあてる
以前qmail のソースを展開したディレクトリに移動し, パッチをあてる。
tar zxvf netqmail-1.06.tar.gz
cp -ar netqmail-1.06 netqmail-1.06_smtps
cd netqmail-1.06_smtps
- - -
※ここからはrootで作業します。
qmailのインストール前にqmailで必要なグループ・ユーザーの作成
# mkdir /var/qmail
# addgroup --gid 710 nofiles
# useradd -M -u 710 -g nofiles -s /bin/false -d /var/qmail/alias alias
# useradd -M -u 711 -g nofiles -s /bin/false -d /var/qmail qmaild
# useradd -M -u 712 -g nofiles -s /bin/false -d /var/qmail qmaill
# useradd -M -u 713 -g nofiles -s /bin/false -d /var/qmail qmailp
# addgroup --gid 711 qmail
# useradd -M -u 714 -g qmail -s /bin/false -d /var/qmail qmailq
# useradd -M -u 715 -g qmail -s /bin/false -d /var/qmail qmailr
# useradd -M -u 716 -g qmail -s /bin/false -d /var/qmail qmails
Debian 10では、addgroup --gid を使って設定しました。ディレクトリ /var/qmail/alias もmkdirで手動作成。
vpopmail用のユーザーも作成します。
# addgroup --gid 721 vchkpw
# useradd -g vchkpw -u 721 vpopmail -M -s /bin/false
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
qmailのインストール
qmailがソースプログラムからコンパイルしてインストール
qmail 1.03のソースダウンロード: wget https://cr.yp.to/software/qmail-1.03.tar.gz
パッチのインストール
- qmail-date-localtime.patch: # wget https://qmail.jms1.net/patches/qmail-date-localtime.patch もしくは wget http://www.asahi-net.or.jp/~aa4t-nngk/codes/qmail-date-localtime.patch
- # wget http://www.ckdhr.com/ckd/qmail-103.patch
- # wget http://vps-tora.com/src/qmail-smtpd-relay-reject
qmail-1.03.tar.gzを解凍し、# cd qmail-1.03 で以下のパッチを適用する
- # patch -p1 < ../qmail-date-localtime.patch
- # patch -p1 < ../qmail-103.patch
- # patch -p1 < ../qmail-smtpd-relay-reject
パッチの内容は
- qmail-103.patch (DNS応答に関するパッチ)
- qmail-date-localtime.patch (ローカルタイムに関するパッチ)
- qmail-smtpd-relay-reject (リレーサーバとして利用させないためのパッチ)
- これは迄です。qmail-smtpd-auth-0.31.tar.gz (SMTP認証をqmail-smtpdに追加、smtp-auth のためのパッチ, 後ほど適用する. 詳しくは, こちらを参照)
qmail-103.patch ダウンロード: wget http://www.ckdhr.com/ckd/qmail-103.patch
qmail-date-localtime.patchダウンロード: wget http://www.asahi-net.or.jp/~aa4t-nngk/codes/qmail-date-localtime.patch
qmail SMTP relay rejectダウンロード: wget http://vps-tora.com/src/qmail-smtpd-relay-reject
qmail-smtpd-auth-0.31.tar.gzダウンロード: wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz
qmail-smtpd-auth-0.31を解凍: tar zxvf qmail-smtpd-auth-0.31.tar.gz
qmailのパッチ適用、ビルド・インストール
qmailのソースプログラムerror.h で extern int errno; を #include <errno.h> に変更してからコンパイルします。
# cd qmail-1.03
# make setup check
# ./config-fast host.example.jp (サーバー名のFQDN)
実行結果
# ./config-fast host.example.jp
Your fully qualified host name is host.example.jp.
Putting host.example.jp into control/me...
Putting example.jp into control/defaultdomain...
Putting example.jp into control/plusdomain...
Putting host.example.jp into control/locals...
Putting host.example.jp into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to host.example.jp.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
インストール後の /var/qmail
# ls -la /var/qmail/
合計 40
drwxr-xr-x 10 root qmail 4096 7月 27 12:30 .
drwxr-xr-x 13 root root 4096 7月 27 12:30 ..
drwxr-sr-x 2 alias qmail 4096 7月 27 12:30 alias
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 bin
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 boot
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 control
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 doc
drwxr-xr-x 10 root qmail 4096 7月 27 12:30 man
drwxr-x--- 11 qmailq qmail 4096 7月 27 12:30 queue
drwxr-xr-x 2 root qmail 4096 7月 27 12:30 users
コントロールファイルの設定
/var/qmail/control にはqmailの動作で必要な設定として、以下のように記載します。
- defaultdomain
example.jp
to ヘッダなどにドメイン名が省略された場合に保管されるドメイン名
- locals
localhost
localhost.example.jp
host.example.jp
example.jp
qmailがメールを受け取るドメインを指定するファイルです。受信するホスト名・ドメイン名の設定 qmail-send が使用します。
- rcpthosts
localhost
example.jp
.example.jp
SMTPのメールアドレス宛先を伝えるRCPTコマンドを許可するドメインを指定します。ここで指定されないドメインへのメール送信はsmtpサービスが拒否。他のSMTPサーバーより自ドメイン宛に送信されてきたメールや、ローカル内で送受信しているメールは受け取りますが、このSMTPサーバーを使って他のドメインへのメール送信はできません。これによりスパムメールの中継に利用出来なくなります。但し、/home/vpopmail/etc/tcp.smtpのRELAYCLIENT の設定によりここで指定しないドメインへのメール送信を可能にします。 受信するホスト名・ドメイン名の設定 qmail-smtpd が使用します。
- me
host.example.jp
インストールしたサーバーのFQDN
- plusdomain
example.jp
ドメイン名が+で終わっている場合に付加されるドメイン名。例えば、「user@host+」なら「[email protected]」と置換。 qmail-inject が使用します。
上記の設定で、不正中継対策も含んだ最小限の動作環境になります。
そのほかの設定項目として、パーミッションは他のファイルと同様な chmod 644
/var/qmail/control/databytes 内容は 100000000 100MB以上のメールは拒否
/var/qmail/control/queuelifetime 内容は 259200
登録したドメイン名を確認できます。 # /var/qmail/bin/qmail-showctl
tcpserverのインストール
tcpserverは詳細なアクセス制御が行えるサーバーツールです。qmailはこのtcpserverを使って起動させます。
/usr/local/src にダウンロード: # wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz
パッチucspi-tcp-0.88.errno.patchをダウンロード
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
ucspi-tcp-0.88.tar.gzを解凍し、そのディレクトリに移動 # cd ucspi-tcp-0.88
パッチ ucspi-tcp-0.88.errno.patch を適用
patch < ../ucspi-tcp-0.88.errno.patch
make setup check
tcpserver は /usr/local/bin/ にインストールされます。
ls -la /usr/local/bin
..........
-rwxr-xr-x 1 root root 55912 Aug 13 17:05 tcpserver
-rwxr-xr-x 1 root root 64232 Aug 12 18:22 tcpserver-ssl
vpopmailのインストール
vpopmailをインストール。POP認証後の有効時間は10分と指定。今回使用するバージョンではAPOPが有効になっていますが、バージョンが異なるとAPOPが有効でない場合があるようです。
詳細はここのサイトで確認できます: Installing and configuring vpopmail https://notes.sagredo.eu/en/qmail-notes-185/installing-and-configuring-v...
2021年8月13日時点では、vpopmail-5.4.33.tar.gzが最新のようですが、バージョンで差異があるようです。
ダウンロード一覧: https://sourceforge.net/projects/vpopmail/ ここはダウンロードエラーが起きました:https://ja.osdn.net/projects/sfnet_vpopmail/releases/
vpopmail-5.4.33のインストールとそのパッチ適用
# wget https://notes.sagredo.eu/files/qmail/tar/vpopmail-5.4.33.tar.gz
# wget https://notes.sagredo.eu/files/qmail/patches/vpopmail/roberto_vpopmail-5...
# tar xzf vpopmail-5.4.33.tar.gz
# cd vpopmail-5.4.33
# patch -p1 < ../roberto_vpopmail-5.4.33.patch
解凍後、解凍したディレクトリに移動し、インストールします。POP Before SMTPに対応させるには、configure --enable-roaming-users=y の設定になります。 --enable-relay-clear-minutes=指定分数 は、POP Before SMTPで、最後のPOP接続からSMTPのRelayを許可する制限時間より短くする場合となります。
/home/vpopmail/etc/tcp.smtpを使うために、tcp.smtpを追加作成します。
# vim /home/vpopmail/etc/tcp.smtp
127.:allow,RELAYCLIENT=""
# chown -R vpopmail:vchkpw /home/vpopmail/etc/tcp.smtp
cabファイルの作成
# /usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
# chown -R vpopmail:vchkpw /home/vpopmail/etc/tcp.smtp.cdb
# ls -la /home/vpopmail/etc/
total 24
drwxr-xr-x 2 vpopmail vchkpw 4096 Aug 13 18:27 .
drwxr-xr-x 3 vpopmail vchkpw 4096 Aug 13 17:49 ..
-rw-r--r-- 1 root root 25 Aug 13 18:06 inc_deps
-rw-r--r-- 1 root root 32 Aug 13 18:06 lib_deps
-rw-r--r-- 1 vpopmail vchkpw 26 Aug 13 18:25 tcp.smtp
-rw-r--r-- 1 vpopmail vchkpw 2090 Aug 13 18:27 tcp.smtp.cdb
その後vpopmailの.configure 設定
# ./configure --enable-roaming-users=y --enable-relay-clear-minutes=10 --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-logging=y
# make install-strip
デフォルトのドメイン名の設定は、/home/vpopmail/etc/defaultdomain で設定します。
POP before SMTP
POP before SMTP とは、送信の前にPOPで認証を行い、それからSMTPリレーを許可する仕組みです。POP3デーモン自体はqmailのインストールと同時にインストールされますす。/var/qmail/bin/qmail-pop3dがそれに当たります。しかし、このデーモン自体には認証を行う機能がないため、認証機能を補う必要があります。平文パスワードによる最も簡単な認証確認の手段としては、D. J. Bernstein氏がqmailとともに提供しているcheckpasswordがあります。
APOP(Authenticated Post Office Protocol)について
APOPはPOP3のログイン認証を行うコマンドです。POP3同様qmail-pop3dを使用しますが、認証機能を付加するにはAPOPに対応しているものを選択する必要があります。OHIRA, Shinya氏が提供しているcheckpwはその一つです。
checkpasswordでは/etc/shadowに登録されているパスワードを基に認証(PAM)を行いましたが、checkpwではパスワードを管理するために外部ファイルを使います。仮にPOPパスワードが漏れてしまってもシステムのパスワードまで盗まれるのを防げるため、ほかのサービスへの被害を最小限に抑えられます。
checkpwの場合、ユーザーのPOPパスワードはユーザーが各自で管理できるように、ユーザーのMaildir/下にファイルを保存します。
POP before SMTPの設定
SMTPのアクセスコントロールにはtcp.smtp.cdbファイルを利用します。 tcp.smtp.cdbの作成には、/home/vpopmail/etc/tcp.smtpファイルを作成し、続けてtcpserverのtcprulesを実行します。
/home/vpopmail/etc/tcp.smtpを作成します。内容は
127.:allow,RELAYCLIENT=""
tcprulesを実行し、tcp.smtp.cdbファイルを作成し、パーミッションを変更します。
# tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
# chown -R vpopmail:vchkpw tcp.smtp.cdb
このファイルの指定内容では、127.x.x.xのネットワークからアクセスに限り、/var/qmail/control/rcpthostsで指定した設定は無視されます。全てのドメインへメール送信が可能になります。
通常、メールユーザーがPOP認証を行うとそのユーザーのIPアドレスがRELAYCLIENT=""の設定と共にこのファイルに追加されます。これにより、そのIPアドレスからは/var/qmail/control/rcpthostsの制限を受けずにメール送信が出来るようになります。追加されたIPアドレスは一定時間経過すると次に説明するclearopensmtpによりこのファイルより削除されます。これにより、POP認証後の一定時間に限りメール送信が可能になります。
POP認証が済んだクライアント情報を定期的に削除する為、クーロンに削除スクリプトを以下の手順で登録します。毎時間0,10,20,30,40,50分に削除スクリプトが起動。
# crontab -e
0,10,20,30,40,50 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
※clearopensmtpが起動した際に、POP認証後、vpopmailのconfigure時に"--enable-relay-clear-minutes"オプションで指定した時間が過ぎているとPOP認証の情報が削除されます。この状態が、POP認証後の有効時間切れです。しかし、clearopensmtpを呼び出さないと一度認証したクライアントからは永遠にPOP認証済み状態になります!。忘れず起動させます。
仮想ドメイン・ユーザーの作成
qmailインストールした正規ドメイン example.jp を仮想ドメインとして作成します。その仮想ドメイン内に、必要なメールアカウントを作成します。理由は、OSのユーザーとメールのユーザーを切り離して管理する事が可能になります。
# cd /home/vpopmail/bin/
# ./vadddomain example.jp
Please enter password for postmaster:
enter password again:
作成した仮想ドメインは、/home/vpopmail/domains/仮想ドメイン名で作成されます。
# cd /home/vpopmail/domains/
# ls -la
total 16
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 .
drwxr-xr-x 8 vpopmail vchkpw 4096 Aug 13 18:31 ..
-rw------- 1 vpopmail vchkpw 34 Aug 14 18:07 .dir-control
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 it-school.biz
root@mail:/home/vpopmail/domains# ls -la ./example.jp/
total 28
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 .
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 ..
-rw------- 1 vpopmail vchkpw 34 Aug 14 18:07 .dir-control
-rw------- 1 vpopmail vchkpw 44 Aug 14 18:07 .qmail-default
-rw------- 1 vpopmail vchkpw 0 Aug 14 18:07 .vpasswd.lock
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 postmaster
-rw------- 1 vpopmail vchkpw 127 Aug 14 18:07 vpasswd
-rw------- 1 vpopmail vchkpw 2197 Aug 14 18:07 vpasswd.cdb
root@mail:/home/vpopmail/domains# ls -la ./example.jp/postmaster/
total 16
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 .
drwx------ 3 vpopmail vchkpw 4096 Aug 14 18:07 ..
drwx------ 5 vpopmail vchkpw 4096 Aug 14 18:07 Maildir
-rw------- 1 vpopmail vchkpw 7 Aug 14 18:07 lastauth
仮想ユーザーの作成
# /home/vpopmail/bin/vadduser [email protected]
Please enter password for [email protected]:
enter password again:
管理者向けメールの転送設定
postmasterやroot宛のメールの転送設定を行います。この作業は必須ではありませんが、エラーなどでroot宛などに送られたメールも自分のメールユーザーで受信でき、便利です。root宛のメールを[email protected]に転送する設定です。
/home/vpopmail/domains/仮想ドメイン名のディレクトリに、.qmail-rootファイルを作成し、以下の内容を記述します。ファイル名先頭の"."は必須です。パーミッションを修正。ファイルの命名は".qmail-"+ユーザー名です。
&[email protected]
# chown vpopmail:vchkpw .qmail-root
ユーザーは仮想ユーザーとして作成していなくてもかまいません。webでよく使う[email protected]などもこの転送指定のファイルで可能です。
また、/var/qmail/alias/以下に.qmail-root、.qmail-postmaster、.qmail-mailer-daemonファイルを同じ内容で作成し、パーミッションを修正しす。
# vim /var/qmail/alias/.qmail-root
# vim /var/qmail/alias/.qmail-postmaster
# vim /var/qmail/alias/.qmail-mailer-daemon
# ls -la /var/qmail/alias/
total 20
drwxr-sr-x 2 alias qmail 4096 Aug 14 18:43 .
drwxr-xr-x 10 root qmail 4096 Aug 12 20:14 ..
-rw-r--r-- 1 root qmail 22 Aug 14 18:43 .qmail-mailer-daemon
-rw-r--r-- 1 root qmail 22 Aug 14 18:42 .qmail-postmaster
-rw-r--r-- 1 root qmail 22 Aug 14 18:41 .qmail-root
起動スクリプト
qmailに付属していたサンプルのファイルを元にrcファイルを作成します。rcファイルで、MailboxからMaildir形式に変更します。
# cd /var/qmail
# cp /var/qmail/boot/home /var/qmail/rc
# vim rc
qmail-start ./Mailbox splogger qmail <--この行のMailboxをMaildir/に変更
↓ 最後の/を忘れずに
qmail-start ./Maildir/ splogger qmail
/etc/init.d/qmailファイルを作成します。 711と710はqmaildのユーザーIDとグループIDです。
#!/bin/sh [ -f /var/qmail/rc ] || exit 0 PATH=$PATH:/var/qmail/bin:/usr/local/bin case "$1" in start) echo -n "Starting... qmail" csh -cf '/var/qmail/rc &' /usr/local/bin/tcpserver -H -R -l host.example.jp -v \ -x /home/vpopmail/etc/tcp.smtp.cdb -u 711 -g 710 0 smtp \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 2 & /usr/local/bin/tcpserver -H -R -l host.example.jp -v 0 pop3 \ /var/qmail/bin/qmail-popup mail.it-school.biz /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 2 & touch /var/lock/qmail ;; stop) echo "Shutting down qmail." PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'` if [ ! -z "$PID" ] ; then /bin/kill ${PID} 1> /dev/null 2>&1 fi rm -f /var/lock/qmail ;; *) echo "Usage: "$0" {start|stop}" exit 1 esac exit 0
実行権のパーミッション設定します。
# chmod +x /etc/init.d/qmail
csh(Cシェル)をDebianで使う場合は、 # apt install csh を実行します。
サブミッションポートで実行する場合
#!/bin/sh [ -f /var/qmail/rc ] || exit 0 PATH=$PATH:/var/qmail/bin:/usr/local/bin case "$1" in start) echo -n "Starting... qmail" csh -cf '/var/qmail/rc &' /usr/local/bin/tcpserver -H -R -l mail.it-school.biz -v \ -x /home/vpopmail/etc/tcp.smtp.cdb -u 711 -g 710 0 25 smtp \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 2 & /usr/local/bin/tcpserver -H -R -l mail.it-school.biz -v \ -x /home/vpopmail/etc/tcp.smtp.cdb -u 711 -g 710 0 587 smtp \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 2 & /usr/local/bin/tcpserver -H -R -l mail.it-school.biz -v 0 pop3 \ /var/qmail/bin/qmail-popup mail.it-school.biz /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 2 & touch /var/lock/qmail ;; stop) echo "Shutting down qmail." PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'` if [ ! -z "$PID" ] ; then /bin/kill ${PID} 1> /dev/null 2>&1 fi rm -f /var/lock/qmail ;; *) echo "Usage: "$0" {start|stop}" exit 1 esac exit 0
////////////// 未作業です
qmailに smtp-auth のパッチ
念のために smtp over ssl を使うときのために、qmailに smtp-auth のパッチを適用させます。
qmailのソースをダウンロードしたディレクトリに、qmail-smtpd-auth-0.31.tar.gz (smtp-auth のためのパッチ)をダウンロードします。
wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz
qmailを解凍後、そのqmailを同じディレクトリ内に netqmail-1.06_smtps というディレクトリ名でコピーします。
その netqmail-1.06_smtps に移動して、qmail-103.patch (DNS応答に関するパッチ)と、qmail-date-localtime.patch (ローカルタイムに関するパッチ)
と、qmail-smtpd-relay-reject (リレーサーバとして利用させないためのパッチ)の3つのパッチを適用させます。
qmailのディレクトリにある qmail-smtpd-auth-0.31 パッチプログラムを、netqmail-1.06_smtpディレクトリ内にコピーし、make 実行し、できたqmail-smtpd を/var/qmail/bin/qmail-smtpd-authへコピーします。
tar zxvf netqmail-1.06.tar.gz
cp -r netqmail-1.06 netqmail-1.06_smtps
cd netqmail-1.06_smtps
patch -p1 < ../qmail-103.patch
patch -p1 < ../qmail-date-localtime.patch
patch -p1 < ../qmail-smtpd-relay-reject
cp -r ../qmail-smtpd-auth-0.31/* ./
make
cp qmail-smtpd /var/qmail/bin/qmail-smtpd-auth
////////////// ここまで未作業です
////// 未設定です。
システムのエイリアスアドレス設定
以下のファイルを、ファイル名 alias.sh として作成し、実行権を付加。chmod u+x alias.sh
root 宛のメールをフォワードする先に 「例えば、自分のメールアドレス」 を指定する。「転送」行は'&'で始めます。残りの部分はメイルアドレスです。
cd /var/qmail/alias
echo '&自分のメールアドレスを記入' > .qmail-root
echo '&root' > .qmail-postmaster
echo '&root' > .qmail-mailer-daemon
echo '&root' > .qmail-bin
echo '&root' > .qmail-daemon
echo '&root' > .qmail-games
echo '&root' > .qmail-ingres
echo '&root' > .qmail-nobody
echo '&root' > .qmail-system
echo '&root' > .qmail-toor
echo '&root' > .qmail-uucp
echo '&root' > .qmail-usenet
echo '&root' > .qmail-anonymous
echo '&root' > .qmail-mail
echo '&root' > .qmail-www
echo '&root' > .qmail-dns
chmod 644 .qmail-*
~/Mailbox への配送
Mailboxへ配送するために、/etc/profile の最後の行に以下を書き加える。
MAIL="$HOME/Mailbox"
MAILDROP="$HOME/Mailbox"
export MAIL MAILDROP
cshユーザーのために、/etc/csh.cshrc ファイルを作成し、最後の行に以下を書き加える。
setenv MAIL $HOME/Mailbox
setenv MAILDROP $HOME/Mailbox
※各ユーザーのホームディレクトリのパーミッションは755でないとメール配送時にエラーになるようです。
インストールした実行ファイルへのPATHの設定
/var/qmail/bin 以下のコマンドにパスを通す設定として、bash ユーザのために/etc/profile のPATH= の行(2 行ごとに)に/var/qmail/bin を付け加える。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/qmail/bin"
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/var/qmail/bin"
cshユーザーのために、/etc/csh.cshrc ファイルに、同様のPATH設定を書き加える。
setenv PATH /usr/local/bin:/usr/bin:/bin:/var/qmail/bin
マニュアルのmanを有効にする
/etc/manpath.config に以下の行を追加する。
MANDATORY_MANPATH /var/qmail/man
MANPATH_MAP /var/qmail/bin /var/qmail/man
MANDB_MAP /var/qmail/man /var/qmail/man
qmailの起動
qmailを起動する設定とスタートスクリプトの作成。
cp /var/qmail/boot/home /var/qmail/rc
qmailファイルを /etc/init.d/ へコピー cp qmail /etc/init.d/qmail
そのqmailファイルに実行権を設定 chmod +x /etc/init.d/qmail
スタートスクリプト qmail を作成、内容は以下のとおり。
#!/bin/bash
#
# /etc/init.d/qmail : start or stop the qmail mail subsystem.
#
# source from http://www.atmarkit.co.jp/ait/articles/0211/02/news001.html
#
#
# updated by MIKAMI Takashi (2015/12/15)
# updated by MIKAMI Takashi (2014/06/12)
# created by MIKAMI Takashi (2014/06/11)
### BEGIN INIT INFO
# Provides: qmail
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Should-Start: $network $syslog
# Should-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop qmail
# Description: qmail is qmail
### END INIT INFO
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
#[ -f /var/qmail/rc ] || exit 0
[ -f /var/qmail/bin/qmail-start ] || exit 0
[ -f /var/qmail/bin/qmail-send ] || exit 0
case "$1" in
start)
# Start daemons.
echo "Startig mail-transfer agent: qmail."
sh -c '/var/qmail/rc &'
# For SMTP
# sh -c " /sbin/start-stop-daemon --start --quiet --user qmaild \
# --pidfile /var/run/tcpserver_smtpd.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver -- -HRv -u ` id -u qmaild ` \
# -g ` id -g qmaild ` -x /etc/tcp.smtp.cdb 0 smtp \
# /usr/local/bin/rblsmtpd -r bl.spamcop.net \
# /var/qmail/bin/qmail-smtpd 2>&1 \
# | /var/qmail/bin/splogger smtpd 3 > /dev/null 2>&1 &"
# For SMTP over SSL
# sh -c "/sbin/start-stop-daemon --start --quiet --user qmaild \
# --pidfile /var/run/tcpserver_ssmtp.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver-ssl -- -s -HRv -u \
# ` id -u qmaild ` -g ` id -g qmaild ` -x /etc/tcp.smtp.cdb \
# -n /var/qmail/server.key/qmail.pem 0 ssmtp \
# /usr/local/bin/rblsmtpd -r bl.spamcop.net \
# /var/qmail/bin/qmail-smtpd-auth usuzumi.ep.sci.hokudai.ac.jp \
# /bin/checklocalpwd /bin/true 2>&1 \
# | /var/qmail/bin/splogger smtpd 3 > /dev/null 2>&1 &"
# For POP3
# sh -c "/sbin/start-stop-daemon --start --quiet --user root \
# --pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver -- -v -u 0 -g 0 0 pop3 \
# /var/qmail/bin/qmail-popup \
# usuzumi.ep.sci.hokudai.ac.jp /bin/checkapoppw \
# /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
# | /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
# For POP3 over SSL
# sh -c "/sbin/start-stop-daemon --start --quiet --user root \
# --pidfile /var/run/tcpserver_pop3s.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver-ssl -- -s \
# -n /var/qmail/server.key/qmail.pem \
# -v -u 0 -g 0 0 pop3s \
# /var/qmail/bin/qmail-popup \
# usuzumi.ep.sci.hokudai.ac.jp /bin/checkapoppw \
# /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
# | /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
;;
stop)
# Stop daemons.
echo "Stopping mail-transfer agent: qmail"
PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
if [ ! -z "$PID" ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
# /sbin/start-stop-daemon --user qmails --stop --quiet --oknodo --exec /var/qmail/bin/qmail-send # qmail-send
# /sbin/start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile /var/run/tcpserver_smtpd.pid --exec /usr/local/bin/tcpserver # smtp
# /sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3d.pid --exec /usr/local/bin/tcpserver # pop3
# /sbin/start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile /var/run/tcpserver_ssmtp.pid --exec /usr/local/bin/tcpserver-ssl # smtp over SSL
# /sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3s.pid --exec /usr/local/bin/tcpserver-ssl # pop3s
;;
# ===modified by Mikami Takashi (2014/06/11)===
restart)
$0 stop
$0 start
;;
# ===modified by Mikami Takashi (2014/06/11)===
cdb)
echo "Rebuilding tcp.smtp.cdb"
cd /etc
/usr/local/bin/tcprules /etc/tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
;;
*)
echo 'Usage: /etc/init.d/qmail {start|stop|restart|cdb}'
exit 1
esac
exit 0
ブート時に自動的に起動するように、 以下のコマンドで各/etc/rc.X ディレクトリからシンボリックリンクを設定する。
update-rc.d qmail defaults
qmailを実行する /etc/init.d/qmail start
qmailの実行を確認
ps aux | grep qmail
$ ps aux | grep qmail
avahi 349 0.0 0.3 8284 3788 ? Ss 15:00 0:00 avahi-daemon: running [netqmail.local]
qmails 454 0.0 0.0 2340 744 ? S 15:00 0:00 qmail-send
qmaill 455 0.0 0.0 2292 736 ? S 15:00 0:00 splogger qmail
root 456 0.0 0.0 2292 680 ? S 15:00 0:00 qmail-lspawn ./Mailbox
qmailr 457 0.0 0.0 2284 740 ? S 15:00 0:00 qmail-rspawn
qmailq 458 0.0 0.0 2284 740 ? S 15:00 0:00 qmail-clean
hodota 891 0.0 0.0 4332 888 pts/0 S+ 15:02 0:00 grep qmail
service qmail status
$ sudo service qmail status
● qmail.service - LSB: Start and stop qmail
Loaded: loaded (/etc/init.d/qmail; generated)
Active: active (running) since Thu 2021-07-29 15:00:52 JST; 1min 54s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 5 (limit: 1138)
Memory: 3.1M
CGroup: /system.slice/qmail.service
tq454 qmail-send
tq455 splogger qmail
tq456 qmail-lspawn ./Mailbox
tq457 qmail-rspawn
mq458 qmail-clean
7月 29 15:00:52 netqmail systemd[1]: Starting LSB: Start and stop qmail...
7月 29 15:00:52 netqmail qmail[451]: Startig mail-transfer agent: qmail.
7月 29 15:00:52 netqmail systemd[1]: Started LSB: Start and stop qmail.
7月 29 15:00:52 netqmail qmail[455]: 1627538452.172180 status: local 0/10 remote 0/20
動作検証
ローカル配送テストその1
自分に送る準備
echo ./Mailbox > ~/.qmail
touch ~/Mailbox
自分へメールを送ります。下記のhogeは自分のLinuxユーザーアカウント名に変更して実行します。~hoge/Mailbox にメールが送られることを確認
echo to: hoge | qmail-inject
確認する
lv ~/Mailbox
From [email protected] Thu Jul 29 06:08:02 2021
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <[email protected]>
From: [email protected]
to: [email protected]
ローカル配送テストその2
存在しない宛先に送る。バウンスメールが~hoge/Mailbox に送られてくれば大丈夫です。
echo to: nonexisten | qmail-inject
lv ~/Mailbox
From [email protected] Thu Jul 29 06:08:02 2021
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <[email protected]>
From: [email protected]
to: [email protected]
From MAILER-DAEMON Thu Jul 29 07:00:04 2021
Return-Path: <>
Delivered-To: [email protected]
Received: (qmail 1044 invoked for bounce); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
From: [email protected]
To: [email protected]
Subject: failure notice
Hi. This is the qmail-send program at netqmail.ijinden.jp.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<[email protected]>:
Sorry, no mailbox here by that name. (#5.1.1)
--- Below this line is a copy of the message.
Return-Path: <[email protected]>
Received: (qmail 1041 invoked by uid 1000); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
Message-ID: <[email protected]>
From: [email protected]
to: [email protected]
ローカル配送テストその3
他のホストのメールアカウントへ送信してみます。メールの主題や本文などは無記入の状態です。届いていればOKです。届かいない場合は、/var/log/syslogを見て原因を見つけます。
echo to: メールアドレス | /var/qmail/bin/qmail-inject
ローカル配送テストその4
他のホストの存在しないメールアカウントへ送信してみます。メールの主題や本文などは無記入の状態です。-f オプションでバウンスの送り先を指定します。詳細は、/var/log/syslogでも確認できます。
echo to: 存在しないメールアドレス | /var/qmail/bin/qmail-inject -f [email protected]
[email protected] にバウンスが来ていることを確認する.
lv ~hoge/Mailbox
POP IMAP SMTP ezmlmのインストール
次のページへ
POP / tcpserver
SMTP / tcpserver
VMailMgr
ezmlm
imap dovecot
notqmail install
qmail FAQ
qmailadmin
vpopmail