作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

Postfix とdovecotでメールサーバの設定


最近レンタル契約した仮想マシンのメールサーバを設定変更したのでメモ。

 

メールサーバは設定が複雑だし、スパムメールのリレーに使われないように注意しないといけないしで、何かとハードルが高いですが、まぁこれも勉強と思ってやりました。

仮想サーバはお名前.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を自前で立ち上げて設定を直接変更する必要がありました。

 

 

image

 

 

 

送信メールの設定を確認する。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

http://www.kensuke.jp/~kensuke/pukiwiki/index.php?test%2FUbuntu%2010.04%20LTS%20Server%2F08_dovecot_virtualdomain#jee2c50c

 

 

また、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列目が転送先のメールアドレスになります。

info@XYZ.com       info@XYZ.com,uemera@hogehgoe.co.jp

 

これを元にハッシュファイルを作成する手順も必要です。

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

関連記事


Linux debianでRAID(ミラーリング)構築。mdadmとpartedで
mdadmによるRAID (ミラーリング)構成手順です。ディスクが1台壊れたのでRAIDを組み直しました。環境はLinux Debian 9.11 (stretch) partedやmdadmコマンドで構築します。

Postfixメールサーバー:送信不可のユーザーを設定する
メールサーバーPostfixにて、送受信ができないユーザーを設定をする方法です。Linux、debian環境です。特定のメールアドレスを送受信不可にします。メールを許可しないLinuxユーザーを作るときに有効です。

Web開発・Web制作のツールや用語を初心者向けに大量紹介。これだけ知っておけば安心。
Webページ製作やWebのシステム開発ではいろんなツールやテクニック、用語を使いますが、全体像がなかなか掴みにくいと思ったので、初心者向けに用語をたくさんまとめました。これさえ押さえておけば業界の常識用語はだいたい網羅できると思います。

KVM仮想マシンをWebからアクセスできるKimchiをdebianにインストール
自宅サーバーにてKVMの仮想マシンを動かしていますが、外からでもリモートで操作できるようにkimchiを導入しました。 GitHub – kimchi-project/kimchi: An HTML5 man …

Linuxの権限について解説。setuidとかsetgidとかスティッキービットとか
setuidとかsetgidとかスティッキービットの解説です。Linuxのこれらの機能については考え方が難しいですが、setuidは「一般ユーザーがroot権限で動かすことができる仕組み」です。setgidはそのグループ版です。詳細なメカニズムを解説します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です