notqmailインストール修正版

notqmailインストール修正版(2022年7月)

notqmaiのインストールは、事前にSSL証明書(インストールしたサーバー独自の)をインストールした環境で行います。

例えば、OpenSSLを使って、秘密鍵、サーバー証明書、公開鍵など。

qmailadminをインストールするために、Webサーバー(Apache)とSSL証明書を設定します。サーバーのIPアドレスでSSL証明書を使う場合はサーバー自身の証明書を使い、もし、ドメイン名でSSL証明書を使う場合は、Let’s Encryptの   https://certbot.eff.org/  を設定してからインストールします。 今回はサーバーのIPアドレスを使う方法でインストールします。

参考にしたサイト: 

 

ネットワーク環境

自ホストを host.example.jp、自ドメインをexample.jp としています。メールサーバを運用する場合、DNSの設定が必須です。DNSに下記のようにドメインに対するMXを設定してください。

IN      MX      10    host.example.jp. 

とりあえず動かすだけならMXは必須ではありませんが、その場合[email protected]ではサーバへの配送は行われません。[email protected]のようなFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を用いてテストしてください。また、その場合、host.example.jp自体はDNSに登録されている必要があります。

念のために、サーバーのホスト名 host.example.jp を /etc/hosts に設定します。

 

notqmailのインストール(バイナリーパッケージの場合)

Debian11のバイナリーパッケージは notqmail_1.08-1.1+10.5_amd64.deb  aptインストール設定は https://software.opensuse.org//download.html?project=home%3Anotqmail&pac...

インストール作業はrootアカウントです。OSはDebian 11です。

 

ユーザーグループやユーザー追加設定はDebian11バイナリーの場合必要なし

Debian11のnotqmailをインストールでは、インストール先のディレクトリ作成(/var/qmail)と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

バイナリーパッケージのインストール後のディレクトリ構成

$ ls -la /var/qmail
total 36
drwxr-xr-x  9 root   qmail 4096 Jul 25 19:20 .
drwxr-xr-x 14 root   root  4096 Jul 25 21:18 ..
drwxr-sr-x  3 alias  qmail 4096 Jul 26 13:42 alias
drwxr-xr-x  2 root   qmail 4096 Jul 25 19:20 bin
drwxr-xr-x  2 root   qmail 4096 Jul 25 20:59 boot
drwxr-xr-x  2 root   qmail 4096 Jul 26 13:40 control
lrwxrwxrwx  1 root   root    23 Jul 10 13:24 doc -> /usr/share/doc/notqmail
drwxr-xr-x 10 root   qmail 4096 Jul 25 19:20 man
drwxr-x--- 11 qmailq qmail 4096 Jul 25 19:20 queue
drwxr-xr-x  2 root   qmail 4096 Jul 10 13:24 users

$ ls -la /var/qmail/alias/
total 24
drwxr-sr-x 3 alias qmail 4096 Jul 26 13:42 .
drwxr-xr-x 9 root  qmail 4096 Jul 25 19:20 ..
-rw-r--r-- 1 root  qmail   26 Jul 25 19:20 .qmail-mailer-daemon
-rw-r--r-- 1 root  qmail   26 Jul 25 19:20 .qmail-postmaster
-rw-r--r-- 1 root  qmail   26 Jul 25 19:20 .qmail-root
drwxr-sr-x 5 alias qmail 4096 Jul 25 19:20 Maildir

$ ls -la /var/qmail/bin
total 1072
drwxr-xr-x 2 root   qmail  4096 Jul 25 19:20 .
drwxr-xr-x 9 root   qmail  4096 Jul 25 19:20 ..
-rwxr-xr-x 1 root   qmail 14584 Jul 10 13:24 bouncesaying
-rwxr-xr-x 1 root   qmail 22936 Jul 10 13:24 condredirect
-rwxr-xr-x 1 root   qmail   126 Jul 10 13:24 datemail
-rwxr-xr-x 1 root   qmail   229 Jul 10 13:24 elq
-rwxr-xr-x 1 root   qmail 14584 Jul 10 13:24 except
-rwxr-xr-x 1 root   qmail 22936 Jul 10 13:24 forward
-rwxr-xr-x 1 root   root  31048 Jul 10 13:24 instchown
-rwxr-xr-x 1 root   qmail 27032 Jul 10 13:24 maildir2mbox
-rwxr-xr-x 1 root   qmail 14568 Jul 10 13:24 maildirmake
-rwxr-xr-x 1 root   qmail 27096 Jul 10 13:24 maildirwatch
-rwxr-xr-x 1 root   qmail   179 Jul 10 13:24 mailsubj
-rwxr-xr-x 1 root   qmail   230 Jul 10 13:24 pinq
-rwxr-xr-x 1 root   qmail 23064 Jul 10 13:24 predate
-rwxr-xr-x 1 root   qmail 22920 Jul 10 13:24 preline
-rwxr-xr-x 1 root   qmail   230 Jul 10 13:24 qail
-rwxr-xr-x 1 root   qmail 18872 Jul 10 13:24 qbiff
-rwx--x--x 1 root   qmail 18848 Jul 10 13:24 qmail-clean
-rwx--x--x 1 root   qmail 14576 Jul 10 13:24 qmail-getpw
-rwxr-xr-x 1 root   qmail 51848 Jul 10 13:24 qmail-inject
-rwx--x--x 1 root   qmail 47752 Jul 10 13:24 qmail-local
-rwx------ 1 root   qmail 27112 Jul 10 13:24 qmail-lspawn
-rwx------ 1 root   qmail 22840 Jul 10 13:24 qmail-newmrh
-rwx------ 1 root   qmail 18744 Jul 10 13:24 qmail-newu
-rwxr-xr-x 1 root   qmail 27376 Jul 10 13:24 qmail-pop3d
-rwx--x--x 1 root   qmail 23056 Jul 10 13:24 qmail-popup
-rwx--x--x 1 root   qmail 27072 Jul 10 13:24 qmail-pw2u
-rwxr-xr-x 1 root   qmail 27032 Jul 10 13:24 qmail-qmqpc
-rwxr-xr-x 1 root   qmail 22976 Jul 10 13:24 qmail-qmqpd
-rwxr-xr-x 1 root   qmail 31208 Jul 10 13:24 qmail-qmtpd
-rwxr-xr-x 1 root   qmail 27016 Jul 10 13:24 qmail-qread
-rwxr-xr-x 1 root   qmail   371 Jul 10 13:24 qmail-qstat
-rws--x--x 1 qmailq qmail 23064 Jul 10 13:24 qmail-queue
-rwx--x--x 1 root   qmail 39448 Jul 10 13:24 qmail-remote
-rwx--x--x 1 root   qmail 22960 Jul 10 13:24 qmail-rspawn
-rwx--x--x 1 root   qmail 55952 Jul 10 13:24 qmail-send
-rwxr-xr-x 1 root   qmail 27112 Jul 10 13:24 qmail-showctl
-rwxr-xr-x 1 root   qmail 39688 Jul 10 13:24 qmail-smtpd
-rwx------ 1 root   qmail 14792 Jul 10 13:24 qmail-start
-rwxr-xr-x 1 root   qmail 14584 Jul 10 13:24 qmail-tcpok
-rwxr-xr-x 1 root   qmail 18712 Jul 10 13:24 qmail-tcpto
-rwxr-xr-x 1 root   qmail 35400 Jul 10 13:24 qreceipt
-rwxr-xr-x 1 root   qmail 18760 Jul 10 13:24 qsmhook
-rwxr-xr-x 1 root   qmail 18776 Jul 10 13:24 sendmail
-rwx--x--x 1 root   qmail 14664 Jul 10 13:24 splogger
-rwxr-xr-x 1 root   qmail 31048 Jul 10 13:24 tcp-env

$ ls -la /var/qmail/boot/
total 48
drwxr-xr-x 2 root qmail 4096 Jul 25 20:59 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
-rwxr-xr-x 1 root qmail  347 Jul 10 13:24 binm1
-rwxr-xr-x 1 root qmail  431 Jul 10 13:24 binm1+df
-rwxr-xr-x 1 root qmail  316 Jul 10 13:24 binm2
-rwxr-xr-x 1 root qmail  400 Jul 10 13:24 binm2+df
-rwxr-xr-x 1 root qmail  314 Jul 10 13:24 binm3
-rwxr-xr-x 1 root qmail  398 Jul 10 13:24 binm3+df
-rwxr-xr-x 1 root qmail  204 Jul 10 13:24 home
-rwxr-xr-x 1 root qmail  292 Jul 10 13:24 home+df
-rwxr-xr-x 1 root qmail  223 Jul 10 13:24 proc
-rwxr-xr-x 1 root qmail  309 Jul 10 13:24 proc+df

$ ls -la /var/qmail/control/
total 32
drwxr-xr-x 2 root qmail 4096 Jul 26 13:40 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..
-rw-r--r-- 1 root root     5 Jul 25 19:20 me

$ sudo ls -la /var/qmail/queue/
[sudo] password for gennai:
total 44
drwxr-x--- 11 qmailq qmail 4096 Jul 25 19:20 .
drwxr-xr-x  9 root   qmail 4096 Jul 25 19:20 ..
drwx------  2 qmails qmail 4096 Jul 10 13:24 bounce
drwx------ 25 qmails qmail 4096 Jul 25 19:20 info
drwx------  2 qmailq qmail 4096 Jul 10 13:24 intd
drwx------ 25 qmails qmail 4096 Jul 25 19:20 local
drwxr-x---  2 qmailq qmail 4096 Jul 25 19:20 lock
drwxr-x--- 25 qmailq qmail 4096 Jul 25 19:20 mess
drwx------  2 qmailq qmail 4096 Jul 10 13:24 pid
drwx------ 25 qmails qmail 4096 Jul 25 19:20 remote
drwxr-x---  2 qmailq qmail 4096 Jul 10 13:24 todo

$ ls -la /var/qmail/users/
total 8
drwxr-xr-x 2 root qmail 4096 Jul 10 13:24 .
drwxr-xr-x 9 root qmail 4096 Jul 25 19:20 ..

 

Maildirへの移行設定

ユーザーごとにmboxかMaildirかを選択するよりは、Maildirをデフォルトで対応するように設定します。

rcファイルのコピー

# cp ./home /var/qmail/rc
# chmod 0755 /var/qmail/rc

コピーしたrcファイル /var/qmail/rc を書き替えます。

qmail-start ./Mailbox --->  ./Maildir/

 

mboxでは各ユーザーのホームディレクトリにMailboxファイルが作成されますが、各自のMaildirディレクトリは各自が手動で生成する必要があります。例えば、以下の手順で

# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias /var/qmail/alias/Maildir

# ls -la
total 24
drwxr-sr-x  3 alias qmail 4096 Aug  8 19:03 .
drwxr-xr-x 10 root  qmail 4096 Aug  8 12:40 ..
-rw-r--r--  1 root  qmail   21 Aug  8 13:06 .qmail-mailer-daemon
-rw-r--r--  1 root  qmail   21 Aug  8 13:06 .qmail-postmaster
-rw-r--r--  1 root  qmail   21 Aug  8 13:06 .qmail-root
drwx--S---  5 alias qmail 4096 Aug  8 19:03 Maildir
# ls -la Maildir/
total 20
drwx--S--- 5 alias qmail 4096 Aug  8 19:03 .
drwxr-sr-x 3 alias qmail 4096 Aug  8 19:03 ..
drwx--S--- 2 alias qmail 4096 Aug  8 19:03 cur
drwx--S--- 2 alias qmail 4096 Aug  8 19:03 new
drwx--S--- 2 alias qmail 4096 Aug  8 19:03 tmp

 

ただし、各自のMaildirディレクトリは各自が手動で生成する必要があります。各ユーザーのアカウントで、例えば、以下の手順

$ /var/qmail/bin/maildirmake ~/Maildir

各自でMaildirが出来ているか確認

$ cd
$ ls -la
total 40
drwxr-xr-x 6 hodota hodota 4096 Aug  8 19:06 .
drwxr-xr-x 3 root   root   4096 Aug  6 16:09 ..
-rw------- 1 hodota hodota  176 Aug  8 13:52 .bash_history
-rw-r--r-- 1 hodota hodota  220 Aug  6 16:09 .bash_logout
-rw-r--r-- 1 hodota hodota 3526 Aug  6 16:09 .bashrc
drwx------ 3 hodota hodota 4096 Aug  7 15:39 .gnupg
-rw-r--r-- 1 hodota hodota  807 Aug  6 16:09 .profile
drwx------ 5 hodota hodota 4096 Aug  8 19:06 Maildir
drwxr-xr-x 3 hodota hodota 4096 Aug  6 17:12 snap
drwxr-xr-x 3 hodota hodota 4096 Aug  7 15:42 work
$ ls -la ./Maildir/
total 20
drwx------ 5 hodota hodota 4096 Aug  8 19:06 .
drwxr-xr-x 6 hodota hodota 4096 Aug  8 19:06 ..
drwx------ 2 hodota hodota 4096 Aug  8 19:06 cur
drwx------ 2 hodota hodota 4096 Aug  8 19:06 new
drwx------ 2 hodota hodota 4096 Aug  8 19:06 tmp

もし、root権限で実行した場合は、chownでMaildirディレクトリのオーナーが各ユーザーにに変更します。

また、新規のユーザーについては、/etc/skelディレクトリにMaildirのひな型を設定し、adduserコマンドなどでユーザーを作成した際に自動でMaildirディレクトリが生成するようにします。

# /var/qmail/bin/maildirmake /etc/skel/Maildir

# ls -la /etc/skel
total 24
drwxr-xr-x  3 root root 4096 Aug  8 19:29 .
drwxr-xr-x 77 root root 4096 Aug  7 16:16 ..
-rw-r--r--  1 root root  220 Apr 18  2019 .bash_logout
-rw-r--r--  1 root root 3526 Apr 18  2019 .bashrc
-rw-r--r--  1 root root  807 Apr 18  2019 .profile
drwx------  5 root root 4096 Aug  8 19:29 Maildir

 

コントロールファイルの設定

/var/qmail/control にはqmailの動作で必要な設定として、以下のように記載します。

  • 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]」と置換。 qmail-inject が使用します。

上記の設定で、不正中継対策も含んだ最小限の動作環境になります。

登録したドメイン名を確認できます。

追加機能で必要な設定もこのコントロールファイルで設定します。

  • virtualdomains

example.com:example.com

  • spfbehavior

1

 

 

 

起動の準備

必要ないかも ここから ー->

初期の管理アカウント設定

# cd ~alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chmod 644 .qmail*

postmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/aliasに保存ではなく、別のメールアドレスへ送信する設定にします。各ファイルにメールアドレスを設定します。echoで代入すると文字のごみができることがあるので、ファイルをエディタで編集するほうが安全のようです。

# echo -n ‘[email protected]’ > .qmail-root
# echo -n ‘[email protected]’ > .qmail-postmaster
# echo -n ‘[email protected]’ > .qmail-mailer-daemon

<--- ここまで 

 

qmailの動作確認

暫定的に動作確認するために、qmailサーバーを起動(pop3やsmtpは起動しない)します。実際は、 tcpserverを使って起動します。 

仮のqmailの起動とメール配信の確認

# sh /var/qmail/rc &

動作確認

# ps -aef | grep qmail
qmails    1304  1098  0 12:50 pts/0    00:00:00 qmail-send
qmaill    1305  1304  0 12:50 pts/0    00:00:00 splogger qmail
root      1306  1304  0 12:50 pts/0    00:00:00 qmail-lspawn ./Maildir/
qmailr    1307  1304  0 12:50 pts/0    00:00:00 qmail-rspawn
qmailq    1308  1304  0 12:50 pts/0    00:00:00 qmail-clean

メールの送信

# echo to: [email protected] | /var/qmail/bin/qmail-inject

 

tcpserverのインストール

tcpserverは、qmailを起動するサービスプロセスとして、ucspi-tcpパッケージの一部として提供されています。ユーザー名・IPアドレス・ドメイン名を基に接続制限がかけられる、特定のIPアドレスでのみサービス受付できる、ハッシュを用いた独自データベースファイル(cdb)なので高速処理可能、設定編変更でもサービス再起動が必要ない、などのメリットがあります。

新規にディレクトリを作成してダウンロード: wget https://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

vi error.h で extern int errno; を #include <errno.h>に変更します。

make してインストールします。 # make setup check

インストール後に、/usr/local/bin/にtcpserver関連が設置されます。

# ls -la /usr/local/bin/tcpserver
-rwxr-xr-x 1 root root 55912 Aug  9 12:54 /usr/local/bin/tcpserver

tcpserverの設定

ユーザー qmaild のユーザーID(UID) と グループ nofiles グループID(GID)を調べます。UIDとGIDはインストール環境により異なります。

# id -u qmaild
109
# id -g qmaild
115

 

tcpserverにおけるリレー設定: cdbの基になるファイルの作成

/etc/tcp.smtp というファイルを作成し、設定します。

# vim /etc/tcp.smtp
Sever IP address:allow,RELAYCLIENT=""
127.0.0.1:allow,RELAYCLIENT="" 

1行目の設定は「IPアドレスからの接続は環境変数RELAYCLIENTに設定し、接続を許可する」となります。Server IP address にサーバーのIPアドレスを記入。

次に、cdbファイルを作成します。

# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

# ls -la /etc/tcp.*
-rw-r--r-- 1 root root   65 Aug  9 13:02 /etc/tcp.smtp
-rw-r--r-- 1 root root 2144 Aug  9 16:10 /etc/tcp.smtp.cdb

 

----> ここから必要ないかも

tcpserverによるqmailの起動(動作検証中!)

qmailを暫定的に起動させます  # sh /var/qmail/rc &

tcpserver経由でqmailを起動します。-u1002 はqmaildのユーザーID(UID)、-g1001はnofilesのユーザーID(GID)です。-x /etc/tcp.smtp.cdbはIPアドレス制御cdbファイルを使う場合です。

# tcpserver -v -u1002 -g1001 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
# tcpserver -v -u1002 -g1001 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

tcpserver から qmail-smtpd を起動する場合

# tcpserver -u 1002 -g 1001 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd &

tcpserverの代表的なオプション

-v  すべてのメッセージを出す
-u  uid ユーザーIDをuidに切り替える
-g  gid グループIDをgidに切り替える
-H  逆引きをしない(リモートホスト名を調べない)
-R  ident(接続したサーバのユーザー情報について、付加的な情報を返す)しない
-x  /etc/tcp.cdb cdbデータベース(/etc/tcp.cdb)で制御する
-c  limit 最大同時接続数をlimitに設定する(デフォルトは40)
-P  逆引き、正引きで相手の正当性を調査する

 

<-- ここまで 必要ないかも

 

vpopmailのインストール

vpopmailは、バーチャルドメインやバーチャルユーザーを実現し、APOP認証やPOP Before SMTPにも対応しています。

まず、vpopmailのアカウントを作成します。

# groupadd vchkpw
# useradd -g vchkpw -s /bin/false -M vpopmail
# mkdir /home/vpopmail
# chown vpopmail:vchkpw /home/vpopmail
# mkdir /home/vpopmail/etc
# chown vpopmail:vchkpw /home/vpopmail/etc

新規にディレクトリを作成してダウンロード: wget http://jaist.dl.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.33/...

解凍後、解凍したディレクトリに移動し、インストールします。POP Before SMTPに対応させるには、configure --enable-roaming-users=y の設定になります。 --enable-relay-clear-minutes=指定分数 は、POP Before SMTPで、最後のPOP接続からSMTPのRelayを許可する制限時間より短くする場合となります。

# cd vpopmail-5.4.33 
# ./configure -enable-roaming-users=y -enable-relay-clear-minutes=10
# make
# make install-strip

参考メモ

vpopmail の ./configure 実行後に現在の設定が表示されました。

config.status: executing depfiles commands

           vpopmail 5.4.33
            Current settings
---------------------------------------

vpopmail directory = /home/vpopmail
 domains directory = /home/vpopmail/domains
               uid = 1001
               gid = 1001
     roaming users = ON  --enable-roaming-users
    tcpserver file = /etc/tcp.smtp
    open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON  --enable-rebuild-tcpserver-file (default)
 password learning = OFF --disable-learn-passwords (default)
     md5 passwords = ON  --enable-md5-passwords (default)
      file locking = ON  --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
     make seekable = ON  --enable-make-seekable (default)
      clear passwd = ON  --enable-clear-passwd (default)
 user dir hashing  = ON  --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
          ip alias = OFF --disable-ip-alias-domains (default)
   onchange script = OFF --disable-onchange-script (default)
     domain quotas = OFF --disable-domainquotas (default)
       auth module = cdb --enable-auth-module=cdb (default)
          auth inc = -Icdb
          auth lib =
  system passwords = OFF --disable-passwd (default)
        pop syslog = show only failed attempts --enable-logging=e (default)
      auth logging = ON  --enable-auth-logging (default)
      spamassassin = OFF --disable-spamassassin (default)
          maildrop = OFF --disable-maildrop (default)

 

/etc/tcp.smtpや/etc/tcp.smtp.cdbファイルは、tcpserverのデフォルト位置のものではなく、vpopmailが用の/home/vpopmail/etc/tcp.smtpを追加作成し、/home/vpopmail/etc/tcp.smtp.cdbを作成し使用します。

# cat tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""

もしくは、tcpserverのtcp.smtpの設定と同じにします。どちらが良いのかわかりませんが。

Sever IP address:allow,RELAYCLIENT=""
127.0.0.1:allow,RELAYCLIENT="" 

cabファイルの作成

# /usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp

# ls -la /home/vpopmail/etc/tcp.*
-rw-r--r-- 1 root root   70 Jul 26 17:30 /home/vpopmail/etc/tcp.smtp
-rw-r--r-- 1 root root 2148 Jul 26 17:37 /home/vpopmail/etc/tcp.smtp.cdb

 

crontabに設定

POP Before SMTPの仕組みがrelay-ctrlと同じように、POP接続してきた端末IPアドレスの記録も同じように行われ、それを定期的に消す作業も同じく必要です。vpopmailでも、cronデーモンを利用し、crontabでpop before smtpのデータを10分ごとにリフレッシュします。

crontab -e  で以下の行を追加します。毎時10分にIPアドレスを整理して、接続から3時間以上経過したものを除外します。configure時に「--enable-relay-clear-minutes」を付加した場合は、そこで指定された分数になります。

# crontab -e
10 * * * * /home/vpopmail/bin/clearopensmtp > /dev/null 2>&1

 

ドメインと仮想ドメインの追加

vpopmailにドメインを(xxx.com)追加します。仮想ドメイン(xxx.com)を作成します。
ここでは、正規ドメイン(xxx.com)を仮想ドメインとして作成しています。
そして、その仮想ドメイン内に、必要なメールアカウントを作成していきます。
この様にする事で、OSのユーザーとメールのユーザーを切り離して管理する事が可能になります。

# /home/vpopmail/bin/vadddomain xxx.com

Please enter password for postmaster: パスワード追加

※最初のドメインを登録すると、次のワーニングが出ます。Please enter password for postmaster:
enter password again:
NOTICE: Out of order entries found in /var/qmail/control/rcpthosts
   Sorting...

vadddomainコマンドにより、次のファイルに設定が追加されます。設定ファイルが存在しない場合は自動的に作成されます。

/var/qmail/control/locals
/var/qmail/control/rcpthosts
(rcphostsが50行以上の場合は/var/qmail/control/morercpthostsになる)
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb

~vpopmail/domains以下のファイルやディレクトリは新規に作成されます。

drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 .
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 ..
-rw------- 1 vpopmail vchkpw   34 Jul 26 17:45 .dir-control
-rw------- 1 vpopmail vchkpw   55 Jul 26 17:45 .qmail-default
-rw------- 1 vpopmail vchkpw    0 Jul 26 17:45 .vpasswd.lock
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 postmaster
-rw------- 1 vpopmail vchkpw  126 Jul 26 17:45 vpasswd
-rw------- 1 vpopmail vchkpw 2196 Jul 26 17:45 vpasswd.cdb
# ls -la ドメイン名/postmaster/
total 16
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 .
drwx------ 3 vpopmail vchkpw 4096 Jul 26 17:45 ..
drwx------ 5 vpopmail vchkpw 4096 Jul 26 17:45 Maildir
-rw------- 1 vpopmail vchkpw    7 Jul 26 17:45 lastauth

 

ここから未確認です ----> 

/var/qmail/control下のファイルを修正したので、変更を有効にするために、qmail-sendプロセスを再起動します。

# ps aux | grep qmail-send
qmails プロセスID  0.0  0.1  1088  368 ?  S Jan31  0:00 qmail-send
# kill -HUP プロセスID

最初のバーチャルユーザーとしてpostmasterが用意され、.qmail-defaultには、の1行が追加され、あて先不明メールは「Sorry, no mailbox here by that name. vpopmail」というメッセージとともに返信されます。

# cat .qmail-default
| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox

ここまで 未確認です <---

 

 

仮想ドメインのユーザー追加・削除(この時点ではユーザー追加まで動作検証がOKですが、それ以外は未完成です!)

ユーザーを追加(ユーザー追加できませんでした)

# /home/vpopmail/bin/vadduser [email protected]

「@」以降のドメインが登録されたものでない場合はエラーになります。ここで設定したパスワードを変更する場合は、vpasswdコマンドを使用します。

バーチャルユーザーを削除する場合は、vdeluserコマンドを使用します。

# cd ~vpopmail/bin
# ./vdeluser [email protected]

バーチャルドメインを削除する場合は、vdeldomainコマンドを使用します。

# cd ~vpopmail/bin
# ./vdeldomain xxx.com

※一般的には「@」以前がユーザー名になりますが、vpopmailを使用した場合は「メールアドレスそのものがユーザー名」になります。

 

ここから 必要ないかも --->

貼り付け

////////////////////  以下は未検証です、作業中 

vpopmailのユーザーでログイン  # su – vpopmail

postmasterの設定

$ cd /home/vpopmail/domains/example.com/postmaster/
$ echo -n ‘[email protected]’ > .qmail

パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ 

chown -R vpopmail:vchkpw .qmail

chmod -R 600 .qmail

もしこの設定がない場合は、/home/vpopmail/domains/example.com/postmaster/Maildir/ へのローカル配送される

 

rootアカウントのメールの設定

$ cd /home/vpopmail/domains/example.com/
$ echo -n ‘[email protected]’ > .qmail-root

パーミッションは vpopmail vchkpw になっているか確認し、なっていなければ 

chown -R vpopmail:vchkpw .qmail-root

chmod -R 600 .qmail-root

/////////////////////////////    <---- ここまで

 

 

exim4 やPostfixのアンインストールとqmail設定

dpkg -l | grep exim       dpkg -l | grep postfix

もし存在すれば # apt-get remove --purge exim4

 

メール関連のコマンドをシンボリックリンクで設定

# ln -s /var/qmail/bin/qmail-qstat /usr/bin/mailq
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

 

内部メール送信のテスト

暫定的qmailを起動: # sh /var/qmail/rc &  停止 psコマンドでプロセス確認、kill コマンドで停止

テスト、ローカルのメール配信で内部の配信が動いてるか確認します。

echo to: [email protected] | /var/qmail/bin/qmail-inject

echo "Hallo" | /var/qmail/bin/sendmail  -v [email protected]

<-----  ここまで 必要ないかも

 

 

Daemontoolsインストール

展開したディレクトリが実行ファイルの環境になり、/command/からシンボリックリンクとなるため、ダウンロードは/usr/local/にする。

cd /usr/local

ダウンロード # wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

/usr/local/admin/daemontools-0.76/src/error.h を編集 extern int errno; を #include <errno.h> に変更

cd /usr/local/admin/daemontools-0.76

daemontools-0.76.tar.gz の場合は、コンパイル(Make)は必要ないようです。 package/install   の実行

以上の作業で、以下のディレクトリとファイルが作成されます。

新たに作成されるディレクトリ
/service
/command
作成されるファイルおよびそのシンボリックリンク
/usr/local/admin/daemontools/下に実行ファイル
/command/下にそのシンボリックリンク
/usr/local/bin/下にさらにシンボリックリンク

systemctl 用のdaemontools を設定します

/etc/systemd/system/daemontools.service 以下の内容でファイルdaemontools.serviceを新規作成

[Unit]
Description=daemontools Start supervise
After=getty.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0

[Install]
WantedBy=multi-user.target

サービスとして登録と起動

# systemctl enable daemontools
# systemctl start daemontools

Daemontoolsで smtp:qmail/pop3:vpoopmail の待ち受けのtcpserverを設定します。

/var/superviseに以下のディレクトリを作成します。

# mkdir -p /var/supervise/qmail
# mkdir -p /var/supervise/smtpd
# mkdir -p /var/supervise/pop3

/var/supervise/qmail/run runファイルを作成し、以下の内容を追加します。

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail

/var/supervise/smtpd/run runファイルを作成し、以下の内容を追加します。

変更するところは、hostname、id -u vpopmail、id -g vpopmail です。hostnameは [サーバのFQDN]、vpopmailのユーザーIDとグループIDは、/etc/passwd で確認します。-u xxxx  -g xxxx  と明記します。

#!/bin/sh
/usr/local/bin/tcprules /home/vpopmail/etc/tcp.smtp.cdb \
/home/vpopmail/etc/tcp.smtp.tmp \
< /home/vpopmail/etc/tcp.smtp
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v -x /home/vpopmail/etc/tcp.smtp.cdb -u `id -u vpopmail` -g `id -g vpopmail` 0 smtp \
qmail-smtpd 2>&1  | splogger smtp 3

/var/supervise/pop3/run runファイルを作成し、以下の内容を追加します。 hostnameは [サーバのFQDN]

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
/usr/local/bin/tcpserver -HRl `hostname` -v 0 pop3 qmail-popup `hostname` /home/
vpopmail/bin/vchkpw \
qmail-pop3d Maildir 2>&1  | splogger pop3 3

実行権のパーミッションを設定します。

# chmod 0755 /var/supervise/qmail/run
# chmod 0755 /var/supervise/smtpd/run
# chmod 0755 /var/supervise/pop3/run

/serviceにリンボリックリンクを設定します。

# cd /service
# ln -s /var/supervise/qmail .
# ln -s /var/supervise/smtpd .
# ln -s /var/supervise/pop3 .

サービスで起動されているか確認するには

# svstat /service/*
/service/pop3: up (pid 359) 3944 seconds
/service/qmail: up (pid 361) 3944 seconds
/service/smtpd: up (pid 360) 3944 seconds

 

念のために、システム再起動して、動作確認します。

以上のメールは受信できましたが、POP、SMTPは検証中です。まだ未完成

 

 

 

タグ: 

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