はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> メールサーバ >> 複数ドメインメールアカウントで個別のメールボックス利用
動作確認 [ Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 / Fedora16 / Fedora17 / CentOS5 / CentOS6 / CentOS7 ]
  1. はじめに・・・
  2. 各サービスのインストール
  3. postfixの設定
    バーチャル転送(同名)設定ファイルの設定
    バーチャルドメイン設定ファイルの作成と設定
    メールボックス定義ファイルの作成と設定
    postfiixサービスの起動
  4. dovecotの設定
    dovecot Ver 2.0未満の場合
    dovecot Ver 2.0の場合
    dovecot用パスワードファイルの作成と設定
    dovecotサービスの起動
  5. procmailの設定
  6. クライアントメールソフトの設定
    設定例(Becky!)

■ はじめに・・・

ひとつのサーバで複数ドメインのメールアドレスを扱う構築方法は多々のサイトで見かけます。
当サイトで紹介している『バーチャルメールサーバの設定(Virtual Postfix)』でも紹介していますが、大きな問題はメールボックスが1つである事です。
要は、バーチャルドメイン宛てのメール([email protected])もリアルドメインのメールボックス([email protected])に配送されてしまいます。
(*:「kajuhome.com」をリアルドメイン、「kaju.homeip.net」をバーチャルドメインと表記しています。)

別にこれでも構わないなら問題ないのですが、できることならメールボックスもドメイン毎に管理したいと思いました。 色々と調べるとリアルドメインをバーチャルとして扱えばメールボックスを個別のものにする事ができます。(多々のサイトで構築方法が紹介されている。)
(余談:バーチャルメールは、UNIX上にアカウントがなくても可能。メールアドレスのみ提供しているサービスなどはこの方法を利用していると思われます。)
いわゆる「バーチャルメールアドレス」と呼んでいて、これでも十分利用できます。

しかし、大きな問題点として「バーチャルメールアドレス」はメール振り分けをなどを行う「procmail」が利用できません。
当方はリアルドメインのメールは「procmail」でSPAMメールの処理やメール加工したものを携帯アドレスに転送などを行っているので必須となっています。

こちらの紹介ページは個別のメールボックスを利用し、かつ、「procmail」も動作する方法を紹介しています。
(注意:「procmail」が動作するのはリアルドメインであって、バーチャルドメインは動作しないので注意する事。)

■ 各サービスのインストール

SMTPサーバ「postfix」とPOP/IMAPサーバ「dovecot」、メール振り分けの「procmail」をインストールします。
既にインストール済みの場合は読み飛ばして下さい。

# yum -y install postfix dovecot procmail

■ postfixの設定

設定ファイルの編集
# vi /etc/postfix/main.cf

ホスト名を設定する(ホスト名.ドメイン名)
myhostname = fedora.kajuhome.com

ドメイン名を設定する
mydomain = kajuhome.com

送信者メールアドレスの@以降をドメイン名にする
myorigin = $mydomain

Postfix が待ち受けるべき全てのネットワークインターフェースを指定
inet_interfaces = all

メールをローカルで受信するドメイン名を指定(ドメイン全体のメールサーバ)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

信頼されたネットワークをCIDR (network/mask) 表記で指定(ローカルネットワーク)
mynetworks = 192.168.1.0/24, 127.0.0.0/8

中継を許可するドメインを指定
relay_domains = $mydestination

メールボックスコマンド(procmail)の指定
mailbox_command = /usr/bin/procmail


バーチャル設定(最終行に追加)

バーチャル転送(同名)設定ファイルの指定
virtual_alias_maps = hash:/etc/postfix/virtual
メールボックスの基点を指定
(以下のディレクトリに全ユーザの「リアルドメイン」「バーチャルドメイン」のメールが管理される)
virtual_mailbox_base = /home/user_mails
バーチャルドメイン設定ファイルの指定
virtual_mailbox_domains = /etc/postfix/virtual_domains
各メールアカウントのメールボックス定義を行う設定ファイルの指定
virtual_mailbox_maps = hash:/etc/postfix/virtual_maps
バーチャルメールの最小のUIDを指定(これより小さいUIDは拒否。
(以下は、一般ユーザの追加を行った場合(Fedora/CentOS)のデフォルト最小値「500」を基準としている。)
virtual_minimum_uid = 499
バーチャルドメインで動作するメールボックスの配送を行うUIDを指定(適当値で)
virtual_uid_maps = static:5000
バーチャルドメインで動作するメールボックスの配送を行うGIDを指定(適当値で)
virtual_gid_maps = static:5000

■ バーチャル転送(同名)設定ファイルの設定

# vi /etc/postfix/virtual
        :
        :
        :
# AUTHOR(S)
#        Wietse Venema
#        IBM T.J. Watson Research
#        P.O. Box 704
#        Yorktown Heights, NY 10598, USA
#
#                                                                     VIRTUAL(5)
最終行に何も設定されていない事を確認

バーチャル転送定義ファイルのDB化(設定内容が空でも作成する必要があります)
# postmap /etc/postfix/virtual

■ バーチャルドメイン設定ファイルの作成と設定

# vi /etc/postfix/virtual_domains
管理したいバーチャルドメインを設定(複数ある場合は、1行毎に1ドメインを設定する)
kaju.homeip.net

注意:ここには「リアルドメイン」を設定しない事。
      本来の目的である「procmail」が動作しなくなります。

■ メールボックス定義ファイルの作成と設定

# vi /etc/postfix/virtual_maps
各ドメイン毎(メールアドレス毎)のメールボックスを定義する。
# kajuhome.com
[email protected]   kajuhome.com/linux/Maildir/
[email protected]   kajuhome.com/fedora/Maildir/
# kaju.homeip.net
[email protected]   kaju.homeip.net/linux/Maildir/
[email protected]   kaju.homeip.net/fedora/Maildir/
[email protected]   kaju.homeip.net/centos/Maildir/

注意:「リアルドメイン」「バーチャルドメイン」の管理したいメールアドレス全てを定義する事。
   また、メールボックスの末尾に「/」を忘れない事。(Maildir形式となります。)

上記例)
[email protected]   kajuhome.com/linux/Maildir/

「[email protected]」のメールボックスはメールボックスの基点「virtual_mailbox_base」で指定した
ディレクトリ配下に「kajuhome.com/linux/Maildir/」として作成される。
すなわち、「/home/user_mails/kajuhome.com/linux/Maildir/」が「[email protected]」のメールボックスとなる。

メールボックス定義ファイルのDB化
# postmap /etc/postfix/virtual_maps

メールボックスの基点作成とパーミッション変更
# mkdir /home/user_mails
# chmod 1777 /home/user_mails

*:スティッキービット「1」を忘れない事。(以下パーミッション部分に「t」が付加される)

作成したメールボックスの基点の確認
# ls -ld /home/user_mails
drwxrwxrwt 13 root root 4096 2007-12-20 12:01 /home/user_mails

各ドメインが使用するディレクトリ作成とパーミッション変更
リアルドメイン
# mkdir /home/user_mails/kajuhome.com
# chmod 1777 /home/user_mails/kajuhome.com
バーチャルドメイン
# mkdir /home/user_mails/kaju.homeip.net
# chown 5000:5000 /home/user_mails/kaju.homeip.net
オーナ・グループは postfix設定ファイルで指定した「virtual_uid_maps」の値にする事。
# chmod 700 /home/user_mails/kaju.homeip.net

■ postfiixサービスの起動

postfiixを起動する
【FC8 から Fedora15 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/postfix start

【Fedora16以降 / CentOS7 の場合】
# systemctl start postfix.service

■ dovecotの設定

dovecot Ver2 より設定ファイルが分散型(機能別)になりました。
設定箇所が違うので、現在のdovecotバージョンを確認します。

dovecot バージョンの確認
# rpm -qa dovecot

dovecot-1.0.15-16.fc9.x86_64
上記の場合は、Ver 1.0となり、下記の場合は、Ver 2.0となります。
dovecot-2.0.1-1.fc14.x86_64

■ dovecot Ver 2.0未満の場合

設定ファイルの編集
# vi /etc/dovecot.conf
プロトコルを指定
protocols = imap imaps pop3 pop3s

メールボックス(Maildir)を指定
mail_location = maildir:/home/user_mails/%d/%n/Maildir
%の意味:
  %d  :ドメイン名
  %n  :アカウント名

パスワードファイルを指定(「auth default」カテゴリ内である事に注意)
auth default {
  passdb passwd-file {
    # Path for passwd-file
    args = /etc/dovecot-passwd
  }
  userdb passwd-file {
    # Path for passwd-file
    args = /etc/dovecot-passwd
  }
}

■ dovecot Ver 2.0の場合

設定ファイルの編集
# vi /etc/dovecot/dovecot.conf
プロトコルを指定
# Protocols we want to be serving.
protocols = imap pop3

メールボックス(Maildir)を指定
# vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/user_mails/%d/%n/Maildir

plaintext 認証(認証メカニズム)の設定
# vi /etc/dovecot/conf.d/10-auth.conf
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
disable_plaintext_auth = no

# Space separated list of wanted authentication mechanisms:
#   plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
#   gss-spnego
# NOTE: See also disable_plaintext_auth setting.
auth_mechanisms = plain login

# Password database is used to verify user's password (and nothing more).
# You can have multiple passdbs and userdbs. This is useful if you want to
# allow both system users (/etc/passwd) and virtual users to login without
# duplicating the system users into virtual database.
#
# <doc/wiki/PasswordDatabase.txt>
#
# User database specifies where mails are located and what user/group IDs
# own them. For single-UID configuration use "static" userdb.
#
# <doc/wiki/UserDatabase.txt>

#!include auth-deny.conf.ext
#!include auth-master.conf.ext

先頭に"#"を追加しコメント化
#!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
先頭の"#"を削除し有効化
!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

■ dovecot用パスワードファイルの作成と設定

# vi /etc/dovecot-passwd
各メールアドレス毎に設定する。
# kajuhome.com
[email protected]:{plain}reallinuxpasswd:500:500::/home/user_mails/kajuhome.com/linux:/sbin/nologin:
[email protected]:{plain}realfedorapasswd:501:501::/home/user_mails/kajuhome.com/fedora:/sbin/nologin:

# kaju.homeip.net
[email protected]:{plain}virtuallinuxpasswd:5000:5000::/home/user_mails/kaju.homeip.net/linux:/sbin/nologin:
[email protected]:{plain}virtualfedorapasswd:5000:5000::/home/user_mails/kaju.homeip.net/fedora:/sbin/nologin:
[email protected]:{plain}virtualcentospasswd:5000:5000::/home/user_mails/kaju.homeip.net/centos:/sbin/nologin:

*:フォーマット
 user:password:uid:gid:gecos:home:shell:extra

  user   :メールアドレス
  password :パスワード(上記では「plain」としているがMD5等も指定可)
  uid    :ユーザID
          リアルドメインの場合  :「/etc/passwd」のユーザ名のIDと同一にする事
          バーチャルドメインの場合:「5000」固定。(postfix設定ファイルで指定した「virtual_uid_maps」の値)
  gid    :グループID
          リアルドメインの場合  :「/etc/group」のユーザ名のグループIDと同一にする事
          バーチャルドメインの場合:「5000」固定。(postfix設定ファイルで指定した「virtual_gid_maps」の値)
  gecos   :ユーザの詳細情報(設定しない)
  home   :メールボックスを指定
  shell   :シェル(上記では「/sbin/nologin」として無効)
  extra   :予備(何も使われていない)

■ dovecotサービスの起動

dovecotを起動する
【FC8 から Fedora14 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/dovecot start

【Fedora15以降 / CentSO7 の場合】
# systemctl start dovecot.service

■ procmailの設定

リアルドメイン宛てのメールをメールボックスに配送する設定を行います。

レシピファイルの作成

全ユーザ共通の場合  : /etc/procmailrc
各ユーザ個別の場合  : < ユーザホームディレクトリ >/.procmailrc

linuxユーザのレシピを作成する場合
# vi /home/linux/.procmailrc
MAILDIRECTORY=/home/user_mails/kajuhome.com
LOGFILE=$HOME/procmail.log
LOCKFILE=$HOME/.lockfile
DEFAULT=$MAILDIRECTORY/$LOGNAME/Maildir/

:0
$DEFAULT

オーナ・グループ、パーミッション設定
# chown linux:linux /home/linux/.procmailrc
# chmod 600 /home/linux/.procmailrc


*:既にアカウントが存在している場合は全てのアカウント毎に必要となります。
  以下を作成しておく事で、新規にアカウントを追加した場合自動的に生成する事も可能です。

新規アカウント用のテンプレートレシピ作成
# vi /etc/skel/.procmailrc
MAILDIRECTORY=/home/user_mails/kajuhome.com
LOGFILE=$HOME/procmail.log
LOCKFILE=$HOME/.lockfile
DEFAULT=$MAILDIRECTORY/$LOGNAME/Maildir/

:0
$DEFAULT

オーナ・グループ、パーミッション設定
# chmod 600 /etc/skel/.procmailrc

■ クライアントメールソフトの設定

■ 設定例(Becky!)

メールボックスの設定で「基本設定」タブを開き、以下の項目を指定します。

【例】リアルドメインの「linux」メールアカウント「[email protected]」の場合

【例】バーチャルドメインの「linux」メールアカウント「[email protected]」の場合

■ コンテンツ関連

■ その他

ページ先頭へ

Copyright(©)2004-2018 First home server construction. All Right Reserved.