MailDepot メールサーバ設定マニュアル

目次
この文書について
メール取り込み方法
対象メールサーバ
POP3/IMAP サーバの設定
SMTP サーバの設定
Milter プログラムの導入

この文書について

この文書では、 MailDepot でメールをアーカイブする際に必要なメールサーバの設定について説明します。各種ソフトウェアのインストール方法や詳細な設定方法については、各ソフトウェア付属のドキュメントなどを参照してください。

メール取り込み方法

MailDepot は指定した POP3/IMAP サーバからメールを定期的に取り込むことでメールのアーカイブを行います。このため、SMTP サーバの送受信されるすべてのメールを POP3/IMAP サーバの MailDepot 専用アカウントに複写転送するように設定する必要があります。

なお、取り込み対象となる POP3/IMAP サーバ・アカウントは複数設定できますので、 POP3/IMAP サーバを複数個所に分散させることも可能です。

対象メールサーバ

この文書が対象とするメールサーバは以下になります。

SMTP サーバ

POP3/IMAP サーバ

POP3/IMAP サーバの設定

POP3/IMAP サーバの設定について説明します。特に記述のない限り、以下 MailDepot が使用する専用の POP3/IMAP アカウント名を maildepot とし、 POP/IMAP サーバのアカウント管理には OS のアカウントを使用します。 LDAP 等の認証サーバを使用している場合は別途設定が必要になります。

dovecot

  1. アカウントの作成

    POP3/IMAP サーバがメールを受け取るためのアカウントを作成します(すでに作成されている場合は不要です)。

    # adduser maildepot
    
  2. dovecot の設定

    dovecot.conf の以下の箇所を編集し、POP3 プロトコル、IMAP プロトコルを有効にして dovecot を起動します。

    # Protocols we want to be serving.
    protocols = pop3 imap
    
    dovecot は、mbox 形式と Maildir 形式の両方に対応しており、Maildir 形式を利用する場合は下記のパラメタを設定してください。
    # Location for users' mailboxes.
    mail_location = maildir:~/Maildir
    

qpopper

  1. アカウントの作成

    POP3 サーバがメールを受け取るためのアカウントを作成します(すでに作成されている場合は不要です)。

    # adduser maildepot
    
  2. qpopper の設定

    必要があれば qpopper.conf を編集して設定します。 inetd/xinetd 経由で起動する場合は、 inetd.conf または xinetd.conf を編集し、 POP3 の接続を受け付けるようにします。 なお、qpooper は mbox 形式のみに対応しており、SMTP サーバのローカル配送では mbox 形式で保存する必要があります。

Courier-IMAP

  1. アカウントの作成

    POP3/IMAP サーバがメールを受け取るためのアカウントを作成します(すでに作成されている場合は不要です)。

    # adduser maildepot
    
  2. Courier-IMAP の設定

    authdaemon と POP3 なら pop3d を、IMAP なら imapd を有効にします。

    /usr/lib/courier-imap/etc/pop3d:
      POP3DSTART=YES
    
    /usr/lib/courier-imap/etc/imapd:
      IMAPDSTART=YES
    
  3. メールボックスの作成

    ユーザのホームディレクトリの下にメールボックスを作成します。

    $ cd ~maildepot
    $ /usr/lib/courier-imap/bin/maildirmake Maildir
    

    Courier-IMAP は Maildir 形式のみに対応しているため、 SMTP サーバの ローカル配送では Maildir 形式で保存する必要があります。

Cyrus IMAP

  1. Cyrus IMAP の設定

    cyrus.conf を編集し、 POP3 または IMAP プロトコルを有効にして Cyrus IMAP を起動します。

    SERVICES {
    ...
            pop3            cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
            imap            cmd="imapd -U 30" listen="imap" prefork=0 maxchild=50
    
  2. アカウントの作成

    saslpasswd2 コマンドと cyradm コマンドを使って、ユーザアカウントを作成します。

    $ saslpasswd2 -c cyrus
    $ saslpasswd2 -c maildepot
    $ cyradm --user cyrus localhost
    passwd: ********
    > cm user.maildepot
    > quit
    

    管理ユーザ名 cyrus は環境に応じて変更してください。 なお、Cyrus IMAP では、SMTP サーバのローカル配送に LMTP プロトコルを利用しており、メールは独自形式で保存されます。

SMTP サーバの設定

SMTP サーバの設定について説明します。SMTP サーバのソフトウェア自体のインストール方法については付属のドキュメントなどを参照してください。

Postfix

always_bcc 機能を利用する場合

Postfix では always_bcc パラメタを設定することで、指定したメールアドレスに 送受信したすべてのメールを複写転送することが可能です。 また、sender_bcc_maps, recipient_bcc_maps を使うと、特定の送受信アドレスに一致するメールだけを複写 転送することが可能です。

Postfix の設定ファイル main.cf に以下の行を追加し、受信したすべてのメールを特定の POP3 アカウントに転送するようにします。

always_bcc = maildepot@localhost

ローカルのアカウントに転送する場合、 POP3 サーバが Maildir 形式のみ対応している場合は(Courier-IMAP など)、以下のように Maildir 形式で保存されるように設定してください。

home_mailbox = Maildir/ 

設定ファイルの変更後は、postfix を再起動します。

# systemctl restart postfix

Postfix によってメールを転送した場合にはDerivered-To ヘッダーに転送元が指定されます。

milter 機能を利用する場合

Postfix 2.3 では、Sendmail バージョン 8 で導入された Milter プロトコルがサポートされており、この機能を利用することでメールサーバで送受信された全てのメールをアーカイブすることが可能です。 ただし、この機能を利用するには別途 Milter プロトコルに対応したプログラムのインストールが必要となります。 Milter プログラムのインストールについては、Milter プログラムの導入をご覧下さい。

Postfix の Milter 機能を利用するには、Postfix の設定ファイル main.cf に以下の行を追加し、 メールの送受信に際して Milter プログラムと通信するように設定します。

smtpd_milters = inet:localhost:9999

上記の下線部分は Milter プロトコルの通信アドレスとなりますので、 導入する Milter プログラムに合わせてパラメタを設定して下さい。

設定ファイルの変更後は、postfix を再起動します。

# systemctl restart postfix

Sendmail

Sendmail 標準ではすべてのメールを特定のアカウントに転送する機能がありませんが、 8.12 以降の Sendmail では Milter プロトコルがサポートされており、 この Milter 機能を利用することでメールサーバで送受信された全てのメールをアーカイブすることが可能です。 この機能を利用してメールをアーカイブするには別途 Milter プロトコルに対応したプログラムのインストールが必要となります。 Milter プログラムのインストールについては、Milter プログラムの導入をご覧下さい。

Sendmail の Milter 機能を利用するには、sendmail の設定ファイル sendmail.cf の変更が必要です。 RedHat Linux での設定手順を下記に示します。 なお、sendmail.cf を作成するためにsendmail-cf パッケージを利用しますので、事前にインストールして下さい。

  1. 既存の設定ファイルをバックアップして下さい。
  2. # cd /etc/mail
    # cp sendmail.cf sendmail.cf.bak
    # cp sendmail.mc sendmail.mc.bak
    
  3. /etc/mail/sendmail.mc に以下の命令を追加します。
  4. define(`_FFR_MILTER', `true')dnl
    INPUT_MAIL_FILTER(`Milter', `S=inet:9999@localhost, T=C:10m;S:1s;R:1s;E:5m')dnl
    

    上記の下線部分は Milter プロトコルの通信アドレスとなりますので、導入する Milter プログラムに合わせてパラメタを設定して下さい。

  5. sendmail.cf を更新します。
  6. # cd /etc/mail
    # m4 < sendmail.mc > sendmail.cf
    
  7. sendmail を再起動します。
  8. # systemctl restart sendmail
    

Milter プログラムの導入

Milter プロトコルに対応したメールサーバでは、 メールの送受信の際に Milter プログラムと通信を行う事で、 メールのフィルタリングやアーカイブを行なうことができます。 Milter プロトコルに対応した Milter プログラムには、 その機能により様々なプログラムが公開されています。

MailDepot では、Milter プロトコルに対応したメールサーバのために、 専用の Milter プログラム md_milter を提供しています。 md_milter を利用すると、自動的に 送受信ヘッダが追加され、 MailDepot において Bcc 検索個人メール検索が可能となります。

md_milter について

md_milter は、MailDepot専用に開発した Milter プログラムです。

md_milter は送受信メールに配送アドレス情報をヘッダとして追加し、Maildir フォルダにメールを保存します。 Maildir 対応の POP サーバを利用することで保存されたメールを MailDepot に取り込む事ができます。 また、md_milter では保存したメールに対してオプションで指定されたメールフィルタプログラムを起動したり、 オプションで指定したメールアドレスにメールを複写転送する事もできます。

md_milter では、下記の配送アドレスの情報を保存メールにヘッダとして追加します。

X-Envelope-From: 送信者メールアドレス
X-Envelope-To: 受信者メールアドレス

この送受信ヘッダの追加により、MailDepot において Bcc 検索個人メール検索が可能となります。

md_milter のインストール

md_milter プログラムは、MailDepot のインストールCDの中に含まれています。

メールサーバが RedHat Linux である場合、下記のコマンドを実行します。

RHEL7 / CentOS 7 の場合
# yum install -y sendmail-milter
# rpm -ihv md_milter/rpms/rhel7-x86_64/maildepot3-milter-1.05-2.*.rpm
RHEL8 / AlmaLinux 8 / Rocky Linux 8 の場合
# dnf install -y sendmail-milter
# rpm -ihv md_milter/rpms/rhel8-x86_64/maildepot3-milter-1.05-2.*.rpm
RHEL9の場合
# dnf config-manager --set-enabled codeready-builder-for-rhel-9-x86_64-rhui-rpms
# dnf install -y sendmail-milter
# rpm -ihv md_milter/rpms/rhel9-x86_64/maildepot3-milter-1.05-2.*.rpm
AlmaLinux 9 / Rocky Linux 9 の場合
# dnf config-manager --set-enabled crb
# dnf install -y sendmail-milter
# rpm -ihv md_milter/rpms/rhel9-x86_64/maildepot3-milter-1.05-2.*.rpm

メールサーバが RedHat Linux 以外である場合、以下のようにプログラムのコンパイル・インストールを実行します。

# mkdir md_milter
# tar xvzf .../md_milter/src/md_milter-1.05.tar.gz
# make DEST=/opt/maildepot3 clean
# make DEST=/opt/maildepot3 all
# make DEST=/opt/maildepot3 install
# install -c -m 755 misc/maildepot-milter.rc /etc/rc.d/init.d/maildepot3-milter
# install -d /opt/maildepot3/var/lock/subsys

md_milter のコンパイルには、GNU C Compiler, GNU make の他に、glibc, sendmail の開発ライブラリが必要です。 詳細は、上記の md_milter-1.05.tar.gz に含まれるドキュメントファイルをご覧下さい。

md_milter の設定

下記の設定ファイルを作成します。

/opt/maildepot3/etc/md_milter.conf

上記の設定ファイルには、下記のパラメタを設定します。

# milter の通信アドレス
port=inet:9999

# maildir フォルダのディレクトリ名
maildir=Maildir

# run as user
user=maildepot

# timeout
timeout=300

# 配送を破棄する
#discard=1

上記の設定により、メールサーバの送受信されたメールが maildepot ユーザ の Maildir フォルダに 保存されます。 保存されたメールは、Maildir 対応の POP3/IMAP サーバを利用することで MailDepot に取り込みます。

md_milter.conf のその他の設定パラメタについては、下記のディレクトリにあるドキュメントをご覧下さい。 なお、インターネット上のメールサーバで利用する場合は、timeout パラメタ値を 300秒程度に設定して下さい。 timeout のデフォルト値は 30秒に設定されおり、通信速度の遅いインターネット上で容量の大きなメールを送信した場合に、 デフォルトのタイムアウト値ではタイムアウトエラーとなることがあります。

/opt/maildepot3/share/doc/md_milter/

md_milter の起動

設定後は、以下のコマンドを実行し md_milter を起動します。

# systemctl start maildepot3-milter