メール転送(Alias)の設定
 

概要:

 メールの転送方法としてAlias、.forward、virtualがありますがここではAliasとvirtualについて説明します。また、アカウントメールボックスとバーチャルメールボックスを同時に運用する方法についても説明します。

 

前提:

1.メールの転送

1.1 システムアカウントとバーチャルアカウント

 システムアカウントはメールボックスとしてアカウントメールボックスと前章で設定したバーチャルメールボックスでの運用の2通りがあります。バーチャルメールボックスでの運用で注意しなければならないのは、ドメインをバーチャルドメインとしているため、システム内からメールが送られる場合はドメインがバーチャルドメインと異なるため(mydestination)、アカウントメールボックスに配信されることです。その為システム内のメールと同じメールボックスで受信するためには転送の設定が必須です。
 以下ではシステムアカウントへのメールでバーチャルメールボックスはバーチャルアカウントとして取扱い、システム内からのメールをシステムアカウントとして取り扱います。それは本質的にバーチャルアカウントのメールアドレスは、ドメインをバーチャル化した時点でシステムアカウントのメールとは異なるためです。

1.2 設定ファイル

 メール転送の設定ではaliases,virtualとvmailboxの設定が関係します。
aliasesはシステムアカウント(平たく言えばドメイン無しのメールアドレス)からの転送先を設定し、転送先はシステムアカウント、バーチャルアカウント、外部のメールアドレスが設定できます。また複数の転送先を設定できます。
 virtualはバーチャルアドレス(外部のメールアドレスも含む。平たく言えばドメイン付きのメールアドレス)からの転送先としてシステムアカウント、バーチャルアカウント、外部のメールアドレスが設定できます。
 vmailboxはバーチャルアカウントのメールボックスを設定します。複数のバーチャルアカウントに対して同じメールボックスを設定することにより、メールを1つのアカウントに集約することができます。従ってvmailboxは本来のメール転送と異なります。
 従って以下のようなメール転送の流れが考えら、以下を組合わせて複雑な転送も可能ですが、転送のループになることもあるので注意が必要です。

  • システムアカウント→aliases→システムアカウント
  • システムアカウント→aliases→バーチャルアカウント
  • バーチャルアカウント→virtual→システムアカウント
  • バーチャルアカウント→virtual→バーチャルアカウント

2.Alias

 前章'バーチャルアカウントの設定'の設定を前提としてAliasを設定します。この場合元になるメールアカウントはシステムアカウントです。転送先にはシステムアカウント、バーチャルアカウント、外部のメールアドレスを設定します。また、複数の設定が可能で小規模のメーリングリストとしても使用できます。
 メールボックスを全てバーチャルボックスで運用する場合は、メールを受信するシステムアカウントについて下記のcentosの例のように転送先にバーチャルアカウントを設定するだけですみます。

2.1 aliasesファイル

 この例ではrootからadminアカウントへの転送とcentosからcentos@example.comへの転送を設定します。Aliasファイルは/etc/postfix/main.cf中のalias_mapsとalias_databaseで指定されています。

# cat /etc/postfix/main.cf
     :
  (前略)
     :
# ALIAS DATABASE
#
# The alias_maps parameter specifies the list of alias databases used
# by the local delivery agent. The default list is system dependent.
#
# On systems with NIS, the default is to search the local alias
# database, then the NIS alias database. See aliases(5) for syntax
# details.
#
# If you change the alias database, run "postalias /etc/aliases" (or
# wherever your system stores the mail alias file), or simply run
# "newaliases" to build the necessary DBM or DB file.
#
# It will take a minute or so before changes become visible.  Use
# "postfix reload" to eliminate the delay.
#
#alias_maps = dbm:/etc/aliases
alias_maps = hash:/etc/aliases       ← 確認
#alias_maps = hash:/etc/aliases, nis:mail.aliases
#alias_maps = netinfo:/aliases

# The alias_database parameter specifies the alias database(s) that
# are built with "newaliases" or "sendmail -bi".  This is a separate
# configuration parameter, because alias_maps (see above) may specify
# tables that are not necessarily all under control by Postfix.
#
#alias_database = dbm:/etc/aliases
#alias_database = dbm:/etc/mail/aliases
alias_database = hash:/etc/aliases   ← 確認
#alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
     :
  (後略)
     :

次に上記のaliasesファイルを変更します。

# cd /etc
# vi /etc/aliases

以下のような転送設定を追加します。

root:           admin
centos:         centos@example.com

設定後にAlias DB生成コマンドでDB化します。

# postalias aliases
# ls -l aliases.db ← DBファイルが作成/更新されたことを確認

2.2 Postfix再読み込

設定後に設定情報を反映させます。

# service postfix reload ← Postfix再読み込
postfix を再読み込み中:                                    [  OK  ]

2.3 確認

 サーバーにログインしてシステム内からドメイン無しでメールを送信します。
rootとadminへメールを送信して、adminでメールを受信できることを確認します。前章のままの設定の場合、メールは/home/admin/Maildir/newの中に配信されるためメールクライアントでのメールの受信ができないので、サーバーにadminでログインしてファイルを直接覗くかmuttコマンドで確認します。
centosへメールを送信して、centos@example.comでメールを受信できることを確認します。

3.Virtual

 元になるメールアカウントはバーチャルアカウントです。転送先にはシステムアカウント、バーチャルアカウント、外部のメールアドレスを設定します。

3.1 virtualファイル

 この例ではadmin@example.comからadminアカウントへの転送とcentos@example.netからuser@example.netへの転送を設定します。virtualファイルは/etc/postfix/main.cfにvirtual_alias_mapsの設定を追記します。

# vi /etc/postfix/main.cf
     :
  (前略)
     :
virtual_alias_maps = hash:/etc/postfix/virtual ← 追記します

次に上記のvirtualファイルを変更します。

# cd /etc
# vi /etc/postfix/virtual

以下のような転送設定を追加します。

admin@example.com:            admin
centos@example.net:           user@example.net

設定後にPostfix DB生成コマンドでDB化します。

# postmap virtual
# ls -l virtual.db ← DBファイルが作成/更新されたことを確認

3.2 Postfix再読み込

設定後に設定情報を反映させます。

# service postfix reload ← Postfix再読み込
postfix を再読み込み中:                                    [  OK  ]

3.3 確認

バーチャルアカウントadmin@example.comへメールを送信して、adminでメールを受信できることを確認します。前章のままの設定の場合、メールは/home/admin/Maildir/newの中に配信されるためメールクライアントでのメールの受信ができないので、サーバーにadminでログインしてファイルを直接覗くかmuttコマンドで確認します。
バーチャルアカウントcentos@example.netとuser@example.netへメールを送信して、user@example.netでメールを受信できることを確認します。また、Aliasの設定もしてあればcentosへメールを送信して、centos@example.comでメールを受信できることを確認します。

4.システムアカウントのメールボックスの利用

 上記AliasとVirtualの設定でもシステムアカウントadminとcentosへ配信されたメールはメールクライアントからアクセスすることができません。それは受信メールサーバーであるDovecotがメールがどこに配信されたか知らないためです。ここまではメールボックスの場所とアクセス権限はauth-passwdfile.conf.extの中で一括で/var/spool/vmai/下に設定していましたが、アカウント毎に設定する必要があります。
 余談になりますが、バーチャルアカウントに関してはPostfixの設定とDovecotの設定を一致させればメールボックスの場所とアクセス権を個別に設定することもできます。
 Postfixの設定方法として2方法あります。Defaultをバーチャルメールボックスとする方法(外部とのメールをメインとする)とDefaultをアカウントメールボックスとする方法(内部間のメールをメインとする)です。Dovecotの設定はどちらも同じです。

4.1 Postfix(Defaultがバーチャルメールボックス)

4.1.1 設定概要

  1. ) aliases
    バーチャルメールボックスを使用するシステムアカウントはシステムアカウントからバーチャルアカウントへの転送をaliasesに設定します。(システム内部メールを外部メールアドレスへ転送:centos)
  2. ) vmailbox
    バーチャルメールボックスを使用するシステムアカウントに対してvmailboxにバーチャルメールボックスを設定します。(centos)
  3. ) virtual
    システムアカウントのメールボックスを使用するシステムアカウントはバーチャルアカウントからシステムアカウントへの転送をvirtualに設定します。(外部メールアドレスから内部メールアドレスへの転送:admin)

 上記のAlias、virtualまでの設定からの変更は次のvmailboxのようにバーチャルメールボックスを使用しないadminの削除です。

4.1.2 バーチャルメールボックスの修正

システムアカウント用のバーチャルメールボックスの設定を削除します。

# vi /etc/postfix/vmailbox
admin@example.com example.com/centos/Maildir/   ← 削除します
centos@example.com example.com/centos/Maildir/
user@example.net example.net/user/Maildir/
info@example.net example.net/info/Maildir/
user@sub.example.net sub.example.net/user/Maildir/
info@sub.example.net sub.example.net/user/Maildir/

バーチャルメールボックスのPostfix検索テーブルを更新します。

# postmap vmailbox
# ls -l vmailbox.db ← DBファイルが作成/更新されたことを確認

4.1.3 Postfix再読み込

# service postfix reload ← Postfix再読み込
postfix を再読み込み中:                                    [  OK  ]

4.2 Postfix(Defaultがアカウントメールボックス)

4.2.1 設定概要

前セクション4.1と同様に以下の設定をします。

  1. ) aliases
    バーチャルメールボックスを使用するシステムアカウントはシステムアカウントからバーチャルアカウントへの転送をaliasesに設定します。(システム内部メールを外部メールアドレスへ転送)
  2. ) vmailbox
    バーチャルメールボックスを使用するシステムアカウントに対してvmailboxにバーチャルメールボックスを設定します。
  3. ) virtual
    システムアカウントのメールボックスを使用するシステムアカウントはバーチャルアカウントからシステムアカウントへの転送をvirtualに設定します。(外部メールアドレスから内部メールアドレスへの転送)

上記のAlias、virtualまでの設定からの変更は前セクションと同様にvmailboxと、システムアカウント向けのメールをシステムカウント下のメールボックスに配信するためにmydestination、virtula_domaisとvmailboxを変更します。

4.2.2 main.cf

mydestinationに$mydomainを復活させます。

# vi /etc/postfix/main.cf
     :
  (前略)
     :
mydestination = $myhostname, localhost.$mydomain, localhost
  ↓ $mydomainを追加します。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
     :
  (中略)
     :

4.2.3 バーチャルドメインの修正(ファイルで設定する場合)

main.cf内でバーチャルドメインをファイルで指定した場合そのファイルを編集します。

# vi /etc/postfix/virtual_domains

システムアカウントの本来のドメインをバーチャルドメインのリストから削除します。

#example.com   ← 本来のドメインを削除/コメントアウトします
example.net
sub.example.net

4.2.4 バーチャルメールボックスの修正

前セクション4.1と同様にシステムアカウント用のバーチャルメールボックスの設定を削除します。
また上記のシステムアカウントcentosの転送先のバーチャルドメインはcentos@example.comでしたがこのドメインがmydestinationとなったためドメインをmydomain以外のバーチャルドメインに変更する必要があります。変更しない場合はメールはシステムアカウント下のMilboxdir下に配信されます。ここではexample.netのバーチャルドメインに設定します。メールクライアントの設定も変更が必要です。

# vi /etc/postfix/vmailbox
admin@example.com example.com/centos/Maildir/   ← 削除します
centos@example.net example.net/centos/Maildir/
user@example.net example.net/user/Maildir/
info@example.net example.net/info/Maildir/
user@sub.example.net sub.example.net/user/Maildir/
info@sub.example.net sub.example.net/user/Maildir/

バーチャルメールボックスのPostfix検索テーブルを更新します。

# postmap vmailbox
# ls -l vmailbox.db ← DBファイルが作成/更新されたことを確認

4.2.5 aliasesファイルの修正

上記同様にシステムアカウントcentosの転送先のバーチャルドメインをcentos@example.netに修正します。

# cd /etc
# vi /etc/aliases

以下のような転送設定を変更します。

root:           admin
centos:         centos@example.com
       ↓ ドメインをmydomain以外のバーチャルドメインに変更
centos:         centos@example.net

設定後にAlias DB生成コマンドでDB化します。

# postalias aliases
# ls -l aliases.db ← DBファイルが作成/更新されたことを確認

4.2.6 Postfix再読み込

# service postfix reload ← Postfix再読み込
postfix を再読み込み中:                                    [  OK  ]

4.3 Dovecot

パスワード設定ファイルにメールボックスの場所とアクセス権を個別に設定します。

4.3.1 auth-passwdfile.conf.extの修正

ユーザーDBの設定をpasswd-fileに戻します。

# cd /etc/dovecot/conf.d
# vi auth-passwdfile.conf.ext
# Authentication for passwd-file users. Included from auth.conf.
#
# passwd-like file with specified location.
# <doc/wiki/AuthDatabase.PasswdFile.txt>

passdb {
  driver = passwd-file
#  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  args = /etc/dovecot/passwd
}

userdb {
  driver = passwd-file                   ← コメントを外す。
  args = /etc/dovecot/passwd             ← コメントを外す。
#  driver = static                       ← コメントアウトする。
#  args = username_format=%u /etc/dovecot/users
#  args = uid=vmail gid=vmail home=/var/spool/vmail/%d/%n               ← コメントアウトする。
}

4.3.2 アカウントのpasswd情報

システムアカウントのuid、gid、ホームディレクトリーをDovecotによるSASL化と同様にして取得します。 アカウント(ここではアカウントadmin)のpasswd情報を調べます。

# grep admin /etc/passwd
admin:x:501:501::/home/admin:/bin/bash

4.3.3 パスワードファイル設定

パスワードファイルの各アカウントに個別にuid、gid、Homeディレクトリーを設定します。バーチャルアカウントの場合ここでは、uid、gidは共通のvmailの値をHomeディレクトリーには個別の値を設定します。Aliasの所で登録したシステムアカウントuserはバーチャルメールボックスのまま使用するのでバーチャルアカウントの値を設定します。システムアカウントcentosはアカウントのメールボックスを使用するので/etc/passwdの値を設定します。

# vi /etc/dovecot/passwd
admin:{HMAC-MD5}b6417c4a20462e8f452cb1dbd7a4fb152ba7c64b056547cce6adfd06de78fa10:501:501::/home/admin
 又はadmin@example.com.ログインするユーザーアカウントを設定する
admin@example.com:{HMAC-MD5}b6417c4a20462e8f452cb1dbd7a4fb152ba7c64b056547cce6adfd06de78fa10:501:501::/home/admin
centos@example.com:{HMAC-MD5}dd59f669267e9bb13d42a1ba57c972c5b13a4b2ae457c9ada8035dc7d8bae41b:10000:10000::/var/spool/vmail/example.com/centos
 又は
centos@example.net:{HMAC-MD5}dd59f669267e9bb13d42a1ba57c972c5b13a4b2ae457c9ada8035dc7d8bae41b:10000:10000::/var/spool/vmail/example.net/centos
info@example.net:{HMAC-MD5}c3367b2f3f41201978bd059de16a961edad51e68c51352546d72fa8b2cafd03a:10000:10000::/var/spool/vmail/example.net/info
user@sub.example.net:{HMAC-MD5}8135099db2bfc9d0e7a8ac1aac59d453232fef93cb636d15e54a360816bc7a15:10000:10000::/var/spool/vmail/sub.example.net/user

4.3.4 Dovecot再読み込

# service dovecot reload ← Dovecot再読み込
Dovecot Imap を再読み込み中:                               [  OK  ]

4.4 確認

 メールクライアントに各システムアカウント、バーチャルアカウントを設定し、アカウント間でメールの送受信テストをします。

 

最終更新のRSS
Last-modified: 2014-03-11 (火) 02:00:03 (3697d)