notqmailインストール修正版(2022年7月)
notqmaiのインストールは、事前にSSL証明書(インストールしたサーバー独自の)をインストールした環境で行います。
例えば、OpenSSLを使って、秘密鍵、サーバー証明書、公開鍵など。
qmailadminをインストールするために、Webサーバー(Apache)とSSL証明書を設定します。サーバーのIPアドレスでSSL証明書を使う場合はサーバー自身の証明書を使い、もし、ドメイン名でSSL証明書を使う場合は、Let’s Encryptの https://certbot.eff.org/ を設定してからインストールします。 今回はサーバーのIPアドレスを使う方法でインストールします。
参考にしたサイト:
- https://www.atmarkit.co.jp/ait/articles/0109/04/news002_2.html
- https://itpass.scitec.kobe-u.ac.jp/hiki/hiki.cgi?%5BITPASS2018%5D2018%E5...
- https://www.bn-x.net/archives/note/2019/11/102/
- http://www.ryouto.jp/linux/linux_38.html
- https://notes.sagredo.eu/en/qmail-notes-185/netqmail-106-basic-setup-42....
- https://hoge.work/2018/06/10/2018-06-10-021338/
ネットワーク環境
自ホストを 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の代表的なオプション
<-- ここまで 必要ないかも
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は検証中です。まだ未完成