実践Linux
CentOS5/6.5        CentOS5/6.5 目次へ  TOP(HOME)へ

Mailサーバー(CentOS 6.5の場合)  2014年9月更新





ns1.my-dom.xxxにはDNSで別名mail.my-dom.xxxが設定されているものとする。
ここでは、外部からの送受信要求は想定していない。内部からのみ。
外部からの要求を受け付ける設定は、実際の運用のページを参照。

●メールサーバー(Postfix)
Postfixは、標準でインストール済みのはず。

/etc/postfix/main.cf  postfixの基本設定

ほとんどの設定は変更の必要はない。
myhostname = mail.my-dom.xxx
mydomain = my-dom.xxx  これで***@mail.my-dom.xxxや***@my-dom.xxxでメールが届くようになる。ただし、***@ns1.my-dom.xxxでは届かないので注意。
myorigin = $myhostname  @以下に付加する文字列
inet_interface = all  メールを受け取るネットワークインターフェイス。localhostだとメールが受信できない。
inet_protocols = ipv4  allだとaliasesの設定で警告がでる。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  最終着地だと判断するドメイン
mynetworks = 192.168.7.0/24, 127.0.0.0./8  リレー制限
relay_domain =   上以外で転送を許可するドメイン
home_mailbox = Maildir/  配送形式

転送設定
 /etc/aliasesを編集
  tarou: tarou,maru@peke.ne.jp   自分にも残して、maruに転送。
  hanako: sima   自分には残さないで、simaに転送。
 データベースに反映(/etc/aliases.dbの更新)
  # postalias /etc/aliases


●POPサーバー(dovecot)
/etc/dovecot/dovecot.conf の編集
 protocols = pop3
 listen = *   デフォルトの「listen = *, ::」ではエラーがでる。IPV6の設定が余計。
 !include conf.d/*.conf

/etc/dovecot/conf.d/10-mail.conf
 mail_location = maildir:~/Maildir

外部に対しては、ポート(110や995)を開かない。内部使用のみ。

●クライアント
ポートの設定は、995、「sslが必要」にチェック。


●SSL/TLSを利用した暗号化通信については、SSL/TLSのページを参照してください。

バーチャルドメインの設定(新しく取得したnew-dom.xxxを想定。ドメインの追加を参照。)

@共有ドメイン
main.cfに以下のような設定をする。
 mydestination = $mydomain, $myhostname, new-dom.xxx
すると、$mydomain(my-dom.xxx)、$myhostname(mail.my-dom.xxx)、new-dom.xxx宛のメールを受け取るようになる。受け取るのはUNIXアカウントのユーザー。
user1@my-dom.xxx、user1@mail.my-dom.xxx、user1@new-dom.xxxはすべてUNIXユーザーuser1が受け取ることになる。

Aバーチャルエイリアス(別のUNIXユーザーに転送)
@ではすべて同じユーザーに配送されたが、バーチャルドメイン宛を別のUNIXユーザーが受け取るようにできる。

main.cfの設定
mydestinationにはnew-dom.xxxを指定しない。(virtual_alias_domainsに指定。)
mydestination = $mydomain, $myhostname
virtual_alias_domains = new-dom.xxx   空白または「,」で区切って複数指定可能。
virtual_alias_maps = hash:/etc/postfix/virtual   ユーザリストの指定

ユーザリスト/etc/postfix/virtual(転送先を列挙、/etc/aliasesの転送設定と同じ)
postmaster@new-dom.xxx postmaster
user1@new-dom.xxx user2
user3@new-dom.xxx user3
( @new-dom.xxx user4   ←キャッチオールアドレス )
これでuser1@new-dom.xxx宛はuser2に届く。この場合user2やuser3は実在しなくてはならないが、user1は実在しなくてもよい。
virtual_alias_domains に定義されたドメインで、virtual_alias_mapsに登録されていないメールアドレスはSMTPの時点で「User unknown」で拒否されるが、キャッチオールアドレスを設定するとそれらをuser4が受け取るようにできる。ただし、スパムメールなど大量のメールが配送されてくる危険性があるので注意。

データベース化
# postmap /etc/postfix/virtual   ←/etc/postfix/virtual.dbにデータベース化

Bバーチャルメールボックス(OSに存在しないユーザーに配送。UNIXユーザとは別のアカウント)
バーチャルMailBox機能を使うと,OSのアカウントを増やすことなくメールのみを使用するユーザーを増やすことができる。
例として,user1@my-dom.xxxとuser1@new-dom.xxxの二つのアドレスをバーチャルMailBoxで別々に管理する。user1は実在しなくてかまわない。

/etc/postfix/main.cfを編集
mydestination = $myhostname,localhost   ←エラーメッセージなど内部メールの受け取り用。これらは***@mail.my-dom.xxxで送られてくるようなので、***@mail.my-dom.xxxはUNIXユーザーで使い、***@my-dom.xxxはバーチャルで使うようにした。さらに、ほとんどものはrootあてに転送されてくるので、rootあてメールをさらに適当なバーチャルメールボックスに転送する設定を/etc/aliasesの最後に加えておくとよい(root: user1@my-dom.xxx等)。
virtual_mailbox_domains = $mydomain,new-dom.xxx   バーチャルメールボックスを利用するドメインを指定
virtual_mailbox_base = /var/spool/mail/vhosts   バーチャルメールボックスの場所を指定 。バーチャルメールボックスはこのフォルダ配下になる。
virtual_mailbox_maps = hash:/etc/postfix/vmailbox   メールアドレスとそれに対する配送先を記したテーブル
virtual_minimum_uid = 5000   virtual_uid_mapsから受け取るuidの最小値
virtual_uid_maps = static:5000   配送エージェントがメールボックスの書き込みに使用するユーザーID
virtual_gid_maps = static:5000   配送エージェントがメールボックスの書き込みに使用するグループID
#virtual_alias_domains =   これは指定しない
virtual_alias_maps = hash:/etc/postfix/virtual   転送リスト
virtual_mailbox_domainsに指定したドメインはmydestinationやvirtual_alias_domainsには指定しないように注意。

virtualグループ、ユーザーの作成
virtual_uid_maps = static:5000、virtual_gid_maps = static:5000で指定したuid、gid で書き込みができるように専用グループ、ユーザーを作る。(ここではvirtual名で作成)
# groupadd -g 5000 virtual
# useradd -g 5000 -u 5000 -s /sbin/nologin -d /var/spool/mail/vhosts virtual

/etc/postfix/vmailboxを編集。
user1@my-dom.xxx user1@my-dom.xxx/Maildir/
user1@new-dom.xxx user1@new-dom.xxx/Maildir/
あて先と配送先を指定。user1@my-dom.xxx宛てのメールは/var/spool/mail/vhosts/user1@my-dom.xxxに、user1@new-dom.xxx宛てのメールは/var/spool/mail/vhosts/user1@new-dom.xxx に配送される。
配送先の指定で、最後が / で終わっているとMaildir形式となる。

vmailboxファイルを反映。
# postmap /etc/postfix/vmailbox

転送設定:ドメインあてのエラーの通知を受け取るpostmasterなどについては、バーチャルエイリアスで設定する。(A参照)
main.cfの設定(再確認)
 virtual_alias_domains =    これは指定しない
 virtual_alias_maps = hash:/etc/postfix/virtual   ユーザリストの指定

/etc/postfix/virtual
 postmaster@my-dom.xxx postmaster  (これはさらにrootに転送される。/etc/aliases)
 postmaster@new-dom.xxx postmaster
 user2@my-dom.xxx foo@******.co.jp

 データベース化
 # postmap /etc/postfix/virtual   ←/etc/postfix/virtual.dbにデータベース化


Dovecotの設定
Postfixの設定が終われば、次はメールクライアントでメールを閲覧できるように、Dovecotを設定する。当然、アカウントとパスワードはUNIXアカウントとは別のものを用意する。
ここでは暗号化されたパスワードを使ってみる。
/etc/dovecot/conf.d/10-mail.conf
 mail_location = maildir:/var/spool/mail/vhosts/%u/Maildir

/etc/dovecot/conf.d/10-auth.conf
 disable_plaintext_auth = no   Plaintextでの認証の有効化
 mechanisms = plain login cram-md5   平文パスワードと暗号化パスワード
 #!include auth-system.conf.ext   コメントアウト(これは使わない=pam認証を無効にする)
 !include auth-passwdfile.conf.ext   コメントアウトをはずす(こちらを使う)

/etc/dovecot/conf.d/auth-passwdfile.conf.ext
 passdb {
  driver = passwd-file
  #args = scheme=CRYPT username_format=%u /etc/dovecot/users
  コメントアウト
  args = /etc/dovecot/passwd  追加
 }
 userdb {
  driver = passwd-file
  #args = username_format=%u /etc/dovecot/users
  コメントアウト
  args = /etc/dovecot/passwd  追加
 }

次にPOP/IMAPアカウントを作成する。
まず、パスワードを決めてdoveadmコマンドで暗号化。(# doveadm pw -s 認証スキーム。スキームを省くとCRAM-MD5になる。スキームの種類は、# doveadm pw -l)
# doveadm pw
 {CRAM-MD5}dcbe8064d829ee98ad16817611150a6c7ee5fe1c9dfd79f5395be892f162bfd3
 これをコピーして/etc/dovecot/passwdに貼り付ける

/etc/dovecot/passwdの作成 (dovecot.confをコピーして作成するとよい。権限、Selinuxを引き継げる。)
user1@my-dom.xxx:{CRAM-MD5}dcbe8064d829ee98ad16817611150a6c7ee5fe1c9dfd79f5395be892f162bfd3:5000:5000::/var/spool/mail/vhosts/user1@my-dom.xxx/Maildir
user1@new-dom.xxx:{CRAM-MD5}5aba2ca129c8462988ba3c39e7d9c8803e411ed05a8b5415897962514beb0e7b:5000:5000::/var/spool/mail/vhosts/user1@new-dom.xxx/Maildir

書式   (ユーザー名):{CRAM-MD5}abcdefg123456....:(uid):(gid):::::(メールボックスへのパス)
第1フィールドがuser1のみだとどのドメインのuser1なのか識別できないのでアカウントをuser1@my-dom.xxx等にするのがミソ。
dovecot-passwdファイルの変更では dovecotプロセスを再起動する必要はない。


※ バーチャルメールボックスとSSL/TLSを使用した設定は、実際の運用のページを参照。

TOP(HOME)へ

目 次

特別企画
Raspberry Piで遊ぶ

HOME(全体のシステム構成&目次)

CentOS7
CentOS7のインストール〜ネットワークの設定ほか
CentOS7の新機能(systemdとfirewalld)
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
Webサーバー
  Webでファイルの受け渡し
  アクセス解析ツールAwstats
  Wordpressでブログ構築
FTPサーバー
FTPS(FTP over SSL/TLS)
Mail(Dovecot&Postfix)サーバー
Sambaサーバー
MariaDB(MySQL)サーバー
DHCPサーバー
SSHサーバー
VNCサーバー
ストリーミングサーバーRed5
ドメインの追加

CentOS5〜6
ネットワーク&ファイアウォール(iptables)
DNS(BIND)サーバー
DHCPサーバー
メールサーバー(基本)
メールサーバー/実際の運用
Webサーバー
  WebDAVによるファイル共有
  Webでファイルのやり取り
  アクセス解析ツールawstats
  namazuで全文検索
  WordPressブログサイト構築
  EC-CUBEショッピングサイト構築
FTPサーバー
ファイルサーバー・Samba
データベースpostgreSQL
  ExcelからpostgreSQLを操作
データベースMySQL
SSHサーバー
VNC
SSL/TLSを利用した暗号化通信
openVPN
ストリーミングサーバー
    C++ RTMP Server
    Helix server Basic
ドメインの追加
Xen・仮想化
特定ディレクトリに容量制限

SELinux
SELinux基本設定
新しいタイプとポリシー・モジュールを作成してみる
マクロを利用したteファイルの記述
新しいドメインを導入してみる

coLinux
Fedora11で試す

Cプログラミング目次
X11プログラム
サイエンス・プログラム

計測・プログラム
秋月電子のデーターロガーpico ADC-16
「今すぐ使えるパソコン計測USBマイコン基板」に付属のTRZ1102
センサーの使用例

Glade2/GTK+を使ってみる
テキスト・ビューで簡易エディター
ドローイングエリアで自動描画
放物線運動(pango、cairoも試してみる)
これらを、GTK+のみで書き出す

フォントについて
ネットワーク・プログラミング
postgreSQL接続
CGI
ファイル操作

●その他
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く