qmail install

qmailのインストール

qmail、netqmail, notqmail などのインストール方法

 

qmail 1.03 によるインストール

環境:

このインストール作業は、以下のサイトを参考にしました。

 

環境

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化パッチとその他のパッチをダウンロード

$ 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-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+」なら「user@host.example.jp」と置換。 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 name@example.jp
Please enter password for name@example.jp:
enter password again:

管理者向けメールの転送設定

postmasterやroot宛のメールの転送設定を行います。この作業は必須ではありませんが、エラーなどでroot宛などに送られたメールも自分のメールユーザーで受信でき、便利です。root宛のメールをhoge@example.jpに転送する設定です。

/home/vpopmail/domains/仮想ドメイン名のディレクトリに、.qmail-rootファイルを作成し、以下の内容を記述します。ファイル名先頭の"."は必須です。パーミッションを修正。ファイルの命名は".qmail-"+ユーザー名です。

&hoge@example.jp
# chown vpopmail:vchkpw .qmail-root

ユーザーは仮想ユーザーとして作成していなくてもかまいません。webでよく使うwebmaster@example.jpなどもこの転送指定のファイルで可能です。

また、/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ファイルを作成します。 711710は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 hoge@netqmail.ijinden.jp Thu Jul 29 06:08:02 2021
Return-Path: <hoge@netqmail.ijinden.jp>
Delivered-To: hoge@netqmail.ijinden.jp
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <20210729060802.910.qmail@netqmail.ijinden.jp>
From: hoge@netqmail.ijinden.jp
to: hoge@netqmail.ijinden.jp

 

ローカル配送テストその2

存在しない宛先に送る。バウンスメールが~hoge/Mailbox に送られてくれば大丈夫です。

echo to: nonexisten | qmail-inject
lv ~/Mailbox

From hoge@netqmail.ijinden.jp Thu Jul 29 06:08:02 2021
Return-Path: <hoge@netqmail.ijinden.jp>
Delivered-To: hoge@netqmail.ijinden.jp
Received: (qmail 911 invoked by uid 1000); 29 Jul 2021 15:08:02 +0900
Date: 29 Jul 2021 15:08:02 +0900
Message-ID: <20210729060802.910.qmail@netqmail.ijinden.jp>
From: hoge@netqmail.ijinden.jp
to: hoge@netqmail.ijinden.jp

From MAILER-DAEMON Thu Jul 29 07:00:04 2021
Return-Path: <>
Delivered-To: hoge@netqmail.ijinden.jp
Received: (qmail 1044 invoked for bounce); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
From: MAILER-DAEMON@netqmail.ijinden.jp
To: hoge@netqmail.ijinden.jp
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.

<nonexisten@netqmail.ijinden.jp>:
Sorry, no mailbox here by that name. (#5.1.1)

--- Below this line is a copy of the message.

Return-Path: <hoge@netqmail.ijinden.jp>
Received: (qmail 1041 invoked by uid 1000); 29 Jul 2021 16:00:04 +0900
Date: 29 Jul 2021 16:00:04 +0900
Message-ID: <20210729070004.1040.qmail@netqmail.ijinden.jp>
From: hoge@netqmail.ijinden.jp
to: nonexisten@netqmail.ijinden.jp

 

ローカル配送テストその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 hoge@netqmail.ijinden.jp

hoge@netqmail.ijinden.jp にバウンスが来ていることを確認する.

lv ~hoge/Mailbox

 

POP IMAP SMTP ezmlmのインストール

次のページへ

POP / tcpserver
SMTP / tcpserver
VMailMgr
ezmlm
imap dovecot
notqmail install
qmail FAQ
qmailadmin
vpopmail

 

 

タグ: 

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