MailDepot メールサーバ設定マニュアル
この文書について
この文書では、 MailDepot でメールをアーカイブする際に必要なメールサーバの設定について説明します。各種ソフトウェアのインストール方法や詳細な設定方法については、各ソフトウェア付属のドキュメントなどを参照してください。
メール取り込み方法
MailDepot は指定した POP3/IMAP サーバからメールを定期的に取り込むことでメールのアーカイブを行います。このため、SMTP サーバの送受信されるすべてのメールを POP3/IMAP サーバの MailDepot 専用アカウントに複写転送するように設定する必要があります。
なお、取り込み対象となる POP3/IMAP サーバ・アカウントは複数設定できますので、 POP3/IMAP サーバを複数個所に分散させることも可能です。
対象メールサーバ
この文書が対象とするメールサーバは以下になります。
SMTP サーバ
- Postfix 2.0 以降
- Sendmail 8.12 以降
POP3/IMAP サーバ
- dovecot
- qpopper
- Courier-IMAP
- Cyrus IMAP
POP3/IMAP サーバの設定
POP3/IMAP サーバの設定について説明します。特に記述のない限り、以下 MailDepot が使用する専用の POP3/IMAP アカウント名を maildepot とし、 POP/IMAP サーバのアカウント管理には OS のアカウントを使用します。 LDAP 等の認証サーバを使用している場合は別途設定が必要になります。
dovecot
- アカウントの作成
POP3/IMAP サーバがメールを受け取るためのアカウントを作成します(すでに作成されている場合は不要です)。
# adduser maildepot
- 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
- アカウントの作成
POP3 サーバがメールを受け取るためのアカウントを作成します(すでに作成されている場合は不要です)。
# adduser maildepot
- qpopper の設定
必要があれば qpopper.conf を編集して設定します。 inetd/xinetd 経由で起動する場合は、 inetd.conf または xinetd.conf を編集し、 POP3 の接続を受け付けるようにします。 なお、qpooper は mbox 形式のみに対応しており、SMTP サーバのローカル配送では mbox 形式で保存する必要があります。
Courier-IMAP
- アカウントの作成
POP3/IMAP サーバがメールを受け取るためのアカウントを作成します(すでに作成されている場合は不要です)。
# adduser maildepot
- Courier-IMAP の設定
authdaemon と POP3 なら pop3d を、IMAP なら imapd を有効にします。
/usr/lib/courier-imap/etc/pop3d: POP3DSTART=YES
/usr/lib/courier-imap/etc/imapd: IMAPDSTART=YES
- メールボックスの作成
ユーザのホームディレクトリの下にメールボックスを作成します。
$ cd ~maildepot $ /usr/lib/courier-imap/bin/maildirmake Maildir
Courier-IMAP は Maildir 形式のみに対応しているため、 SMTP サーバの ローカル配送では Maildir 形式で保存する必要があります。
Cyrus IMAP
- 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
- アカウントの作成
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 パッケージを利用しますので、事前にインストールして下さい。
- 既存の設定ファイルをバックアップして下さい。
- /etc/mail/sendmail.mc に以下の命令を追加します。
- sendmail.cf を更新します。
- sendmail を再起動します。
# cd /etc/mail # cp sendmail.cf sendmail.cf.bak # cp sendmail.mc sendmail.mc.bak
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 プログラムに合わせてパラメタを設定して下さい。
# cd /etc/mail # m4 < sendmail.mc > sendmail.cf
# 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