Qmail IMAP over SSLQmail over SSLSMTP over SSL

Qmail over SSLでメール通信を暗号化する〜第 1 篇:基本情報〜|CentOS 7

qmail-setup-info Qmail
スポンサーリンク

「Qmail over SSL でメール通信を暗号化する」 は6編に分けてあります。他の記事は ▼ をご参照ください。

CentOS7 で運用中の Qmail1.03 の設置及び設定方法をメモっておきます。主な特徴は、smtpsimaps を利用して メール通信の暗号化 を実現、Vpopmail w/ QmailAdmin 構成で無限の マルチドメインのメールサーバ に、ezmlm との連動で 大量メール の発射台化dnscache でさらに 高速化 が実現します。

Qmail over SSL とは

SMTP over SSL と IMAP over SSL を有効にしてメールの通信を暗号化 する Qmail 環境 を言います。
※ この言葉は筆者が勝手に作ったものです

メール環境 ( 目標 )

Qmail に下記のパッケージをそれぞれ追加して機能を拡張して行きます。

  • Vpopmail を追加して、1つのサーバ ( 1つの IP ) で複数のドメインを管理する。
  • QmailAdmin で、Qmailウェブで管理 する。
  • daemontools を利用して、Qmail 関連の全てのプロセスやディレクトリをリアルタイムで自動監視及び自動リロードする。 ( supervise, svscan, multilog )
  • SSL を適用するための X.509キーを作成 する。
  • ucspi-tcpSSL パッチ を適用して、SMTP over SSL を実装する。
  • Courier-AuthlibCourier-IMAP を追加しIMAP over SSL を実装する。
  • ezmlm を追加して、メーリングリスト 機能を有効にする。( w/ MySQL )
  • dnscache を追加して、メール送受信高速化 する。

上記のように、さまざまなパッケージと連動することによって、用途に合わせてメールサーバの機能を拡張できます。

構築直後の様子

Qmail が開始されると、以下のようなメッセージが syslog に表示されます。( default )

qmail:status:local0/10 remote0/20

ps-fg| grep qmail コマンドで Qmail デーモン を調べます。
少なくとも 4つ のデーモンが実行中で、全て idle 状態 である必要があります。

qmail-send、running as qmails
qmail-lspawn、running as root
qmail-rspawn、running as qmailr
qmail-clean、running as qmailq

構築後の実行プロセスの例 ( svscan.service )

[root@centos7 ~]# systemctl status svscan.service

● svscan.service - Daemontools svscan
   Loaded: loaded (/usr/lib/systemd/system/svscan.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-05-25 01:43:11 JST; 9h ago
 Main PID: 4606 (svscanboot)
   CGroup: /system.slice/svscan.service
           ├─ 2431 tcpserver-ssl -v -s -x /home/vpopmail/etc/tcp.smtp.cdb -n /var/qmail/control/clientcert.pem -R -H -l0 -u 1009 -g 1004 0 smtps q...
           ├─ 3863 tcpserver-ssl -v -s -x /home/vpopmail/etc/tcp.smtp.cdb -n /var/qmail/control/clientcert.pem -R -H -l0 -u 1009 -g 1004 0 smtps q...
           ├─ 4606 /bin/sh /command/svscanboot
           ├─ 4667 svscan /service
           ├─ 4668 readproctitle service errors: .........................................................................................
           ├─ 4673 supervise qmail
           ├─ 4674 supervise log
           ├─ 4675 supervise smtpd
           ├─ 4676 supervise log
           ├─ 4677 supervise smtps
           ├─ 4678 supervise log
           ├─ 4679 supervise dnscache
           ├─ 4680 supervise log
           ├─ 4681 tcpserver -vHRl0 -x /home/vpopmail/etc/tcp.smtp.cdb -u 1009 -g 1004 0 smtp qmail-smtpd example.com /home/vpopmail/bin/vchkpw ...
           ├─ 4682 multilog t s1000000 n20 /var/log/qmail/smtps
           ├─ 4683 qmail-send
           ├─ 4684 tcpserver-ssl -v -s -x /home/vpopmail/etc/tcp.smtp.cdb -n /var/qmail/control/clientcert.pem -R -H -l0 -u 1009 -g 1004 0 smtps q...
           ├─ 4686 /usr/local/bin/dnscache
           ├─ 4687 multilog t s1000000 n20 /var/log/qmail
           ├─ 4691 multilog t s1000000 n20 * +* stats * * * ./dnsstatus +* ./main
           ├─ 4695 qmail-lspawn ./Maildir/
           ├─ 4696 qmail-rspawn
           ├─ 4697 qmail-clean
           ├─ 4703 multilog t s1000000 n20 /var/log/qmail/smtpd
           ├─28755 tcpserver-ssl -v -s -x /home/vpopmail/etc/tcp.smtp.cdb -n /var/qmail/control/clientcert.pem -R -H -l0 -u 1009 -g 1004 0 smtps q...
           └─32161 tcpserver-ssl -v -s -x /home/vpopmail/etc/tcp.smtp.cdb -n /var/qmail/control/clientcert.pem -R -H -l0 -u 1009 -g 1004 0 smtps q...

サーバ環境

  • CentOS Linux release 7.6.1810 (Core)
  • Apache/2.4.39 (Unix)
  • OpenSSL 1.1.1b 26 Feb 2019
  • nghttp nghttp2/1.38.0
  • mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server – GPL)
  • Source Directory : /usr/local/src << ここにソースファイルを保存及びコンパイルします。

事前準備 & 情報

  • 有効なドメインが少なくとも1つ必要です。ドメインの取得がまだの場合は、こちら
  • SELinux は無効にしておきます。
    [root@centos7 ~]# getenforce ← SELinuxのステータスを確認
    Enforcing 
    ← SELinuxが有効
    [root@centos7 ~]# setenforce 0 
    ← SELinux 無効化
    [root@centos7 ~]# getenforce 
    ← SELinuxのステータスを確認
    Permissive ← SELinux 無効
    [root@centos7 ~]# vi /etc/sysconfig/selinux 
    ← SELinuxの設定ファイルを編集
    SELINUX=enforcing
    ↓↓↓
    SELINUX=disabled 
    ← システム起動時、SELinuxを無効化
  • メールサーバのパブリック IP が必要です。
    ※ 動的 IP 環境で1つのパブリック IP を使用する環境の例です。
    [root@centos7 ~]# ip r
    default dev ppp0 scope link
    default via 11.0.0.254 dev p1p1 proto dhcp metric 100
    10.1.0.0/16 dev p1p1 proto kernel scope link src 10.1.1.30 metric 100
    123.123.123.1 dev ppp0 proto kernel scope link src 123.123.123.10 # << パブリックIP
    213.123.123.180 via 10.1.1.254 dev p1p1 src 10.1.1.30
    [root@centos7 ~]#
  • ネームサーバでメールサーバ ( mail.example.com ) の MX レコードを含む適切な設定が完了している必要があります。
  • DNS Resolver 設定が正しく設定されていることを確認します。
    ( 表示されているネームサーバのアドレスは、環境によって異なります。)
    [root@centos7 ~]# cat /etc/resolv.conf
    nameserver 8.8.8.8
  • nslookup / dig などのコマンドで外部ドメインをクエリできることを確認します。
    [root@centos7 ~]# nslookup google.com
    Server: 127.0.0.1
    Address: 127.0.0.1#53
    Non-authoritative answer:
    Name: google.com
    Address: 172.217.26.46
  • 簡単な設定で Qmail の Sendmail Wrapper を MUA が利用できます。
  • Anti-virus、Anti-spamなどのパッケージは連動しません。
  • ユーザのメールが保管される場所は /home 以下になります。実際のメールサーバとして使用する予定であれば、/home パーティションの容量を十分に確保することを推奨します。

設置される Qmail パッケージリスト

下記のパッケージを設置します。

パッケージ説明
qmail-1.03高いセキュリティ性と信頼性、そして効果的かつ簡単な MTA
ucspi-tcp-0.88INETD デーモンを代替する高速なパフォーマンスのSMTPサーバ
( tcpserver、tcprules、rblsmtpd、tcpclient などが含まれる )
daemontools-0.76UNIXサービスを管理するためのツールのコレクション
( supervise、multilog、svc、svstat、svscanなど )
autorespond-2.0.5
Autoresponder(自動応答機能
vpopmail-5.4.33仮想ドメインと仮想ユーザの管理、APOP 認証POP Before SMTP 対応。大規模なサービスを展開する場合は、仮想ユーザを SQL データベースに保存できる
qmailadmin-1.2.16    
qmailadmin-help-1.0.8
仮想ドメインのWeb-based 管理インターフェース
djbdns-1.05DNS Cache および DNS Server
ezmlm-0.53
ezmlm-idx-5.1.2
使いやすく、迅速なスピードの Mailing List Manager
courier-imap-4.1.1POP / IMAP サーバ、軽量であり LDAP 対応も可能、多数のユーザを扱う場合に適している。
courier-authlib-0.58
Courier authentication library( Courier 認証ライブラリ

参考文献

qmail
ucspi-tcp
djbdns
ezmlm
Courier Mail Server

スポンサーリンク

コメント

タイトルとURLをコピーしました