最近レンタル契約した仮想マシンのメールサーバを設定変更したのでメモ。
メールサーバは設定が複雑だし、スパムメールのリレーに使われないように注意しないといけないしで、何かとハードルが高いですが、まぁこれも勉強と思ってやりました。
仮想サーバはお名前.comのVPSプランを使っています。
環境
CentOS release 5.3
Postfix 2.6.2
CentOSのバージョンは、
cat /etc/redhat-release
で確認できます。
Postfixのバージョンは
postconf mail_version
で確認できます。
設定変更の前提と背景
お名前.comのVPSプランは、Webから管理コンソールが画面にログインできて、ここからサブドメインの設定や、メールの各種設定もできて便利なのですが、それらの設定ができる対象は、あくまでレンタルサーバ契約時に併せて申込んだドメインについてのみです。
他社で管理しているドメイン名を、DNS設定だけ変更してお名前.comのVPSで運用することはもちろんできますが、メールサーバやバーチャルドメインに関する設定は、管理コンソールを使えず自分でアプリケーションの設定を行わないといけないみたいです。
僕は他社管理のドメインについてメールの設定を行いたかったので、管理コンソール画面は使えず、Postfixを自前で立ち上げて設定を直接変更する必要がありました。
送信メールの設定を確認する。SMTP Authの設定
Postfixの設定ファイル
/etc/postfix/main.cf を編集します。
SMTP Authの設定といっても、既に設定済みの状態でしたので、特に触るところはありませんでした。
こんな感じです。
permit_sasl_authenticated は、SASL認証(つまりSMTP認証)をパスしたクライアントは送信を許可する、
permit_mynetworks は、あらかじめmynetworks セクションで提議した自ネットワークの送信を許可する設定です。
#smtpauth setting
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_pipelining
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
新しいメールアドレスを追加する。dovecotの設定
新しく作りたいメールアドレスの設定です。
POP/IMAPサーバのdovecotは、メール転送エージェントのPostfixと組み合わせて使われていますが、
メールアドレスの追加はこのdovecotに対して設定を行うことになります。
(新規メールアドレスのパスワードを設定する、と言った方が正確かも知れません)
/etc/dovecot.conf に、パスワードを定義しているファイルの場所が書いてあります。
auth default {
mechanisms = plain login cram-md5
passdb passwd-file {
# File contains a list of usernames, one per line
#args = /etc/dovecot.deny
args = /etc/dovecot/mail.passwd
#deny = yes
}
info@XYZ.com というメールアドレスを追加してみます。パスワードは例として平文でhogehogeとします。
この場合、設定は以下のようになります。
/etc/dovecot/mail.passwd
info@XYZ.com:{plain}hogehoge:6001:1000::/var/vmail/XYZ.com/info/Maildir:/bin/false::
mail.passwd ファイルは/etc/passwdファイルと互換性があるので、以下のようにして該当するユーザーを抜き出して、mail.passwdに付け足します。したがって、uidとかgidのフィールドもmail.passwdに反映されていますが、実は必要なのは前の2カラム目までです。
$cat /etc/passwd | grep [ユーザー名] >> /etc/dovecot/mail.passwd
その後、mail.passwdを編集します。
/etc/passwdは
user:password:uid:gid:(gecos):home:(shell):extra_fields
という形式なので、2つめのpasswordの項目を、{PLAIN}hogehogeに変更する必要があります。
ちなみに、
dovecotのユーザー認証周りでうまくいかない場合には、
/etc/dovecot.confで
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
を設定すれば良いかも。
<参考>
test/Ubuntu 10.04 LTS Server/08_dovecot_virtualdomain – kensuke.jp PukiWiki
また、first_valid_uidはデフォルトで500でしたが、89(=postfixのuid)にしました。
postfixユーザ権限でないと作れないMailディレクトリがあったの、こうしないとうまくうまく動きませんでした。
first_valid_uid = 89
設定を変更したあとは、
service dovecot restart
でサービスを再起動します。
バーチャルドメインなどPostfixの設定
ドメイン XYZ.com は、新しく追加するバーチャルドメインとしてpostfixに教えてやる必要があります。
また、メールアドレスの定義もPostfix側に必要です。
/etc/postfix/main.cf を見ると、これらは別ファイル定義になっていることが分かります。
virtual_uid_maps = static:6001
virtual_gid_maps = static:1000# バーチャルドメインの設定ファイル
virtual_mailbox_domains = hash:/etc/postfix/virtual_domain_maps
# バーチャルメールボックスパスの設定ファイル
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
# メール転送のためのエイリアスファイル
vrtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
バーチャルドメインは
/etc/postfix/virtual_domain_maps にドメインの設定を書きます。
XYZ.com OK
これを元にハッシュファイルを作成する手順も必要です。
postmap /etc/postfix/virtual_domain_maps
メールアドレスは
/etc/postfix/virtual_mailbox_maps に設定を書きます。
info@XYZ.com XYZ.com/info/Maildir/
パスの設定は、main.cf中に virtual_mailbox_base としてベースディレクトリ定義がされているので、上記のように個別のメールアドレスのパスはその続きから書けばいいです。
これを元にハッシュファイルを作成する手順も必要です。
postmap /etc/postfix/virtual_mailbox_maps
メールアドレスの転送設定は
/etc/postfix/virtual_alias_maps に設定を書きます。
1列目が転送元、2列目が転送先のメールアドレスになります。
これを元にハッシュファイルを作成する手順も必要です。
postmap /etc/postfix/virtual_alias_maps
その他
postfix, dovecot以外にamavisdも有効にしておく必要があるみたいです。
amavisdはウィルス&スパムチェック用のサービスです。
service amavisd start
<参考>
Postfix バーチャルドメインホスティング Howto
http://www.postfix-jp.info/trans-2.3/jhtml/VIRTUAL_README.html
バーチャルメールボックスの考え方についての詳しい説明がのってます。
以下は、telnetでメール接続テストするときに便利です。
POPをtelnet 110で接続する方法
Linux / Windows サーバー構築 » Blog Archives » telnetでログインしてPostfixのメールを操作する。
http://server.lunq.net/p148.html
smtpをtelnet 25で接続する方法
Postfix(バーチャルドメイン)の設定の巻 – PukiWiki
http://www.sea-bird.org/pukiwiki/index.php?Postfix%A1%CA%A5%D0%A1%BC%A5%C1%A5%E3%A5%EB%A5%C9%A5%E1%A5%A4%A5%F3%A1%CB%A4%CE%C0%DF%C4%EA%A4%CE%B4%AC