SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【linux】LAMP環境 + メール環境(postfix + dovecot)

概要

さくらのVPSなどを、1台だけ借りて、個人用途で、メール(バーチャルドメイン対応)やWeb(マルチドメイン対応)で使い倒そうという感じの環境構築。

OSはCentOS5.6(もうすぐ6が出そうですけど)。

Webシステムの開発や、Webサイトの本番環境として利用する場合は、Web用のサーバー、メール用のサーバー、DB用のサーバーなど役割に応じて分けたいところだが、ここでは1台で全部やらせる。php、MySQLのバージョンが古いなどについてはこだわらないことにする。(バージョンにこだわる場合のセットアップについてはまた後日)

まず下ごしらえ

いろいろ古いのでとりあえずupdate(たくさんあるので待つ)

yum update

いらないものを削除

yum remove sendmail yum-updatesd (その他いらないものがあれば)

欲しいものを導入

yum install httpd php mysql msyql-server postfix dovecot

この時点で各ソフトウェアのバージョンは次のとおり。

dovecot.x86_64                           1.0.7-7.el5                   installed
httpd.x86_64                             2.2.3-45.el5.centos.1         installed
mysql.x86_64                             5.0.77-4.el5_6.6              installed
mysql-server.x86_64                      5.0.77-4.el5_6.6              installed
php.x86_64                               5.1.6-27.el5_5.3              installed
php-cli.x86_64                           5.1.6-27.el5_5.3              installed
postfix.x86_64                           2:2.3.3-2.3.el5_6             installed

httpdについて

設定ファイルは /etc/httpd/conf/httpd.conf。

デフォルトで、/var/www/html がドキュメントルート。

この状態でもWebサイトを設置できるが、Webのソースを置く場所を作って、マルチドメインするつもりの配置にすると、後の対応がやりやすい。

例) /home/apache/ドメイン名/public_html を、各VirtualHostのドキュメントルートにするなど。

mysqlについて

自分ひとりで使うサーバーだとしても、パスワードを設定する癖をつけておいて悪いことはない。

root のパスワードは設定しておく。

mysqladmin -u root password 新しいパスワード

Postfix の設定

/etc/postfix/main.cf の基本的なところを変更する。

myhostname = foo.example.com
mydomain = example.com
inet_interfaces = all

バーチャルドメインに対応するために、/etc/postfix/main.cf に、以下を追記する。

virtual_mailbox_domains = $myhostname, localhost.$mydomain, $mydomain, example.com, example.net, example.jp
virtual_mailbox_base = /var/spool/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual

/etc/postfix/vmailbox に、バーチャルメールボックスの場所を書く。

foo@example.com    example.com/foo/
hoge@example.com   example.com/hoge/
hoge@example.net   example.net/hoge/

vmailboxファイルを変更したら、バーチャルメールボックスのデータベースを更新を行う。

postmap /etc/postfix/vmailbox

エイリアスを書いたvirtualファイルを変更したら、こちらもデータベースを更新を行う。

postmap /etc/postfix/virtual

SMTP認証ができるように環境を整える。

/usr/lib/sasl2/smtpd.conf を書き換える(64bit版OSの場合は /usr/lib64/sasl2/smtpd.conf)。

pwcheck_method: saslauth を変更。

pwcheck_method: auxprop

saslpasswd2コマンドで、メールのユーザーとパスワードのデーターベースを作る。

saslpasswd2 -u ドメイン名 -c ユーザー名

通常、ファイルが /etc/sasldb2 に作成されるが、初めて作成したときにpostfixから読めないような権限になっていたら、posfixから読めるように権限を設定する。

chgrp postfix /etc/sasldb2

SMTP認証をするように /etc/postfix/main.cf に設定する。

smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

#(古いOutlookなどへの対策)
broken_sasl_auth_clients = yes

dovecot の設定

dovecotはPostfixに合わせる。

メールが /var/spool/mail/vhosts/ドメイン名/アカウント名/ にスプールされる設定に合わせる。

mail_location = maildir:/var/spool/mail/vhosts/%d/%n

受信(POP)のアカウントを作る。受信と送信のパスワードが同じだと、何かと簡単でよいが、そこは自由。

いろんな形の認証を利用できる。今回はpasswdファイル風の形式のデータを作る方式を選択。

ファイルは /etc/dovecot-passwd。下のようなpasswdファイル風のファイルを作る。

test@example.com:0N97wDJ88ZfN2:5000:5000
test1@example.net:8ItpxfT.OWa/c:5000:5000
test2@example.jp:LqQsVhBwWF9gg:5000:5000

パスワードのハッシュは、openssl コマンドで作る。

$ openssl passwd
Password:
Verifying - Password:
0N97wDJ88ZfN2←これを上のファイルに書く

作成した /etc/dovecot-passwd を認証に使ってもらえるよう設定をする。

passdb passwd-file {
  args = /etc/dovecot-passwd
}
userdb passwd-file {
  args = /etc/dovecot-passwd
}

関連するメモ

コメント