メールサーバは、配送先を1つのドメインのみ設定できるのではなく、複数のドメインを配送先として設定できます。指定された配送先のドメインをどのように仕分けを行うかはいろいろな方法が用意されています。
前提
前提としてメール保管形式は、Maildir形式にします。Postfixとdovecotの設定は、以下に設定してください。
Postfix Maildir形式の設定
vi /etc/postfix/main.cf
#MailDir形式に設定 home_mailbox = Maildir/
設定の反映は、Postfixを再起動してください。
dovecot Maildir形式の設定
まずdovecotのインストールします。すでにインストールされている場合は、飛ばしてください。
yum install dovecot
以下Maildir形式の設定です。
vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
設定の反映は、dovecotを再起動してください。
バーチャルメールボックスを設定する方法
バーチャルメールボックスを実現する方法は、3つあります。それは、mydestinationを利用する方法、バーチャルエイリアスを利用する方法、バーチャルメールボックスを利用する方法です。
mydestinationを利用した場合
mydestinationは、宛先、行先を意味しここにドメインを設定するとメールの宛先を見て、設定されているドメインの場合、自サーバに配送されます。ここからどのユーザーに配送するか仕分けします。仕分けは、ドメインを完全に無視しユーザー名のみで仕分けされます。ユーザーは、Linuxで設定されているユーザーのメールボックスに配送されます。
例としてgmail.comと設定した場合、設定されたサーバから送信すると実際のgmail.com宛には配送されず自サーバに配送されます。
vi /etc/postfix/main.cf
mydestination = $myhostname, localhost.$mydomain, localhost,gmail.com
また、後に説明するバーチャルエイリアス、バーチャルメールボックスを設定してもmydestinationで設定したほうが優先され、仕分けもvirtual_alias_maps、virtual_mailbox_mapsで設定していても完全に無視され、Linuxのユーザーに仕分けされるので設定には注意が必要です。
バーチャルエイリアスを設定した場合
バーチャルエイリアスは、宛先のドメインがvirtual_alias_domainsで設定されているものと一致した場合、自サーバに配送されます。そしてvirtual_alias_mapsの記載されている内容を基に仕分けされます。virtual_alias_mapsは、宛先のメールアドレスを基に既存のどのLinuxユーザーに配送するかを記載します。
Postfixの設定
vi /etc/postfix/main.cf
virtual_alias_domains = hogehoge.com virtual_alias_maps = hash:/etc/postfix/virtual
どのユーザーに配送するか設定する
vi /etc/postfix/virtual
#以下のように[ドメイン] anythingを記述したあとメールアドレスとユーザーを関連付ける hogehoge.com anything [email protected] newname
hash化されたDBを作成します。以下のコマンドで設定が反映します。
postmap /etc/postfix/virtual
宛先のアカウントはadduserで作成しておきます。
バーチャルメールボックスを設定した場合
バーチャルメールボックスは、Linuxのユーザーを使わず独自にユーザーを作成しメールアドレスと関連付けます。Linuxのユーザーと切り分けができるため独立性が高まり、管理もしやすくなります。ユーザーとメールボックスは、Linuxのユーザーを使わないため独自に用意する必要があります。
バーチャルメールボックスは、宛先のドメインがvirtual_mailbox_domainsで設定されているものと一致した場合、自サーバに配送されvirtual_mailbox_mapsの記載されている内容を基に仕分けします。virtual_mailbox_mapsは、宛先のメールアドレス(ユーザー名)を基にどのメールボックスに配送するかを記載します。メールボックスのディレクトリは、virtual_mailbox_baseで設定します。メールボックスのディレクトの権限を持つユーザー、グループは、virtual_uid_maps、virtual_gid_mapsで定義します。
Postfixの設定
vi /etc/postfix/main.cf
#自サーバに配送するドメイン。複数記述する場合カンマで追加 virtual_mailbox_domains = hogehoge.com #仕分け時に利用する関連付けファイル virtual_mailbox_maps = hash:/etc/postfix/vmail #メールボックスのディレクトの権限を持つユーザーID、グループID virtual_uid_maps = static:10000 virtual_gid_maps = static:10000 #メールボックスのディレクトリ virtual_mailbox_base = /var/www/vmailbox
メールボックスの作成
#メールボックスのディレクトの権限を持つユーザー、グループを作成 groupadd -g 10000 vmailg useradd -u 10000 -g vmailg vmail #バーチャルメールボックスのディレクトリを作成。このディレクトリにユーザーのメールボックスが作成される。 mkdir /var/www/vmailbox #権限変更 chown -R 10000.10000 /var/www/vmailbox
どのユーザーに、どこのメールボックスへ配送するか記載する
ユーザー名と配送先のメールボックスのpathを記入します。ユーザー名はメールアドレスと同一にします。pathは/ドメイン名/@の前のユーザー名/Maildir/にします。これは後に設定するdovecotの設定と合わすためです。
vi /etc/postfix/vmail
[email protected] hogehoge.com/test/Maildir/
hash化されたDBを作成します。以下のコマンドで設定が反映します。
postmap /etc/postfix/vmail
バーチャルメールボックスに対応したdovecotの設定
Postfixの設定で送信されてきたメールは、無事メールボックスに配送されます。しかしユーザーがメーラーでメールを受信するためには、バーチャルメールボックスに対応したdovecotの設定が必要です。
バーチャルメールボックスの設定
dovecotの認証関連の設定を変更します。デフォルトの認証方法は、Linuxのユーザーのみになっているので、dovecotで独自のユーザー情報を利用した認証方法に変更します。このユーザーを利用して先ほど設定したPostfixの設定に対応させます。
dovecotのアカウント情報は、ユーザーDBとパスワードDBで構成されています。DBは、外部のアカウントシステムやファイルを参照することで情報を管理します。今回は、ユーザーDBにstatic(静的にメールボックスのpathを定義)とpasswdfile(認証用ユーザー)、パスワードDBにpasswdfile(認証用ユーザーに対応したパスワード)を使用します。
以下の設定で認証方法を変更します。
vi /etc/dovecot/conf.d/10-auth.conf
#!include auth-deny.conf.ext #!include auth-master.conf.ext #認証時のパスフレーズの送信方法を指定。デフォルトは plain。 auth_mechanisms = cram-md5 plain login #Linuxのアカウントを使って認証を使用する。使わない場合はコメントアウトする。 !include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext #Dovecotの認証データベースを使用する。#を外す !include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #静的なPathを設定するデータベースを使用する。#を外す。この設定でPostfixのメールボックスに対応させる。 !include auth-static.conf.ext
dovecot独自のユーザーを設定する
以下の設定で独自のユーザー情報が記載されたファイルを定義します。
vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb { driver = passwd-file #args = scheme=CRYPT username_format=%u /etc/dovecot/users args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd } userdb { driver = passwd-file #args = username_format=%u /etc/dovecot/users args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd }
次は、ユーザーに設定するパスワードを先に作成します。
#パスワード生成コマンド doveadm pw Enter new password:←パスワードを入力 Retype new password:←再度パスワードを入力 #生成されたパスワードは後に貼り付けるのでコピーする {CRAM-MD5}fe8522268d91e485ccac8f36800e4fa6b10363e2a371....
最後にユーザーを作成します。
vi /etc/dovecot/passwd
ユーザー名は、必ずメールアドレスと同一にします。これは、userdbで「username_format=%u」と設定したからです。%uは、メールアドレス全体を表します。これを「username_format=%n」とすると@の前のユーザー名で定義する必要があります。パスワードは、先ほどコピーしたパスワードを貼り付けます。
#ユーザー名:パスワード で設定 #userdbでusername_format=%uにした場合 [email protected]:{CRAM-MD5}fe8522268d91e485ccac8f36800e4fa6b10363e2a371.... #userdbでusername_format=%nにした場合は@以降を削除する #test:{CRAM-MD5}fe8522268d91e485ccac8f36800e4fa6b10363e2a371....
バーチャルメールボックスのPathを設定する
Postfixで設定したバーチャルメールボックスからメーラーで受信できるように設定します。
以下の設定でPostfixで設定したバーチャルメールボックス、ユーザーID、グループIDを設定します。
argsのhomeでメールボックスのpathを定義します。ユーザー名をメールアドレスにすることで変数%dと%nを使うことができます。%dは、ユーザー名の@以後のドメイン名を参照し%nは@の前のユーザー名を参照します。これでメールボックスのpathを動的に定義することができます。
vi /etc/dovecot/conf.d/auth-static.conf.ext
userdb { driver = static #args = uid=vmail gid=vmail home=/home/%u #Postfixで設定したバーチャルメールボックス、ユーザーID、グループIDを記載する #%dはユーザー名の@以後のドメイン名、%nは@の前のユーザー名 args = uid=10000 gid=10000 home=/var/www/vmailbox/%d/%n }
特殊変数の詳しい説明はこちら
https://doc.dovecot.org/configuration_manual/config_file/config_variables/#config-variables
dovecotを再起動すると設定が反映され、メーラーからメールを受信することができます。
「クラウドテック」です。 掲載案件では平均月60万、週3~4日勤務の案件が豊富で生活スタイルに合わせた働き方を設計できます。 また福利厚生が充実し旅行、レジャー、家事代行、ヘビーシッター、健康診断など100種類以上を無料で使えます。
- 97%がリモートのお仕事
- 週4日、週3日OKのお仕事多数
- 登録社数74万件業界トップクラス
- 2〜4週間程度でお仕事決定