CentOS 5.5 / Postfix 2.3.3 / Dovecot 1.0.7

前提条件

  • さくらインターネットのVPSサービスを利用。
  • さくらインターネットのVPSは試用期間の場合、OP25Bが有効になっていて特定のプロバイダから送信されたメール以外は25番ポートにアクセスできないので注意。
    • 正式に契約すれば25番ポートが利用できるようになるので特に意識する必要はない。
  • さくらインターネットで逆引きの名前解決をするには、正引きができていないといけない。私の場合、「お名前.com」でドメインを取得していたので、まず「お名前.com」の「レンタルDNSレコード設定」で正引き設定をする必要があった。またMXレコードも登録しておこう。MXレコードはあるドメインから別のドメインにメールを送信しようとする時に、送信元のメールサーバは送信先のメールサーバに対してMXレコードを問い合わせる。この情報を基ににしてメールの送信先(IPアドレスやホスト名)を知ることができるのだ。つまり登録されていないと宛先がないとエラーになる。
例:
ホスト名 TYPE Prioriry VALUE
mail.bobi6.com A 100.50.100.50  
bobi6.com MX 10 mail.bobi6.com

上記の設定をして初めて、さくらインターネットの逆引き設定ができる。
<さくらインターネット逆引き設定>
  1. VPSコントロールパネルよりログイン
  2. 「VPSホーム」-「ホスト名」の横にある「変更」をクリック
  3. 「現在のホスト名」がさくらインターネットのデフォルトのホスト名になっているが、これを自分で取得したドメインに変更する。「ホスト名」にメールサーバのFQDNを入力し「確認」をクリック
※FQDNが「mail.bobi6.com」ならそちらを入力して下さい。
※正引き設定ができていないと登録できないので注意。

Postfixインストール

# yum -y install postfix

Postfix設定

Postfix設定

# vi /etc/postfix/main.cf
■ホスト名を指定する。ここで指定したものがメールアドレスの@以下になる。例:tanaka@bobi6.com
myhostname = bobi6.com

■ドメインを指定する。
mydomain = bobi6.com

■ローカルからのメール送信時の送信元メールアドレス@以降をここで指定
myorigin = $mydomain

■外部からのメール受信を許可する。
inet_interfaces = all

■自ドメイン宛メールを受信できるようにする。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

■メールボックスをmaildir形式にする。
home_mailbox = Maildir/ 

■転送を許可するホストの範囲を IPアドレスまたはネットワーク表記で具体的に設定します。例えば、自宅のグローバルIPアドレスが、180.33.22.111の場合は下記のように設定します。この設定をしないと転送を受け付けてくれないので、外部ドメイン宛にメールが送信できません。
mynetworks = 180.33.22.111/32, 127.0.0.0/8
※自宅のネットワークだとグローバルIPが変更されるケースがほとんどだと思います。その場合、180.33.0.0/16のように範囲を広げて指定して下さい。

■SMTP-AUTH設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
  permit_mynetworks
   permit_sasl_authenticated
   reject_unauth_destination

Maildir設定

新規ユーザ追加時に自動でホームディレクトリにMaildir形式のメールボックスが作成されるようにする

# mkdir -p /etc/skel/Maildir/{new,cur,tmp}

Maildir配下のフォルダは、rootしか作成できないように権限を設定

#chmod -R 700 /etc/skel/Maildir/

SMTP-Auth設定

saslauthd起動

# /etc/rc.d/init.d/saslauthd start

saslauthd自動起動設定

# chkconfig saslauthd on

sendmail停止

# /etc/rc.d/init.d/sendmail stop
# chkconfig sendmail off

メールサーバー切替え

# alternatives --config mta

Postfix起動設定

# chkconfig postfix on

587ポート利用設定

デフォルトでコメントアウトされているので外す。

# vi /etc/postfix/master.cf
submission inet n - n - - smtpd


OP25B対策

Postfix設定

# vi /etc/postfix/main.cf
■プロバイダのSMTPサーバー名を指定する。下記の例はSonet。対応していないプロバイダがあるので注意すること。(moperaは対応していなかった。)
relayhost = [mail.ba2.so-net.ne.jp]:587

SMTP認証情報設定

プロバイダのSMTPサーバーが対応している認証方式を調査

# telnet mail.ba2.so-net.ne.jp
Trying XXX.XXX.XXX.XXX...
Connected to プロバイダのSMTPサーバー名 (XXX.XXX.XXX.XXX).
Escape character is '^]'.
220 mail.ba2.so-net.ne.jp ESMTP
ehlo localhost
250-mail.ba2.so-net.ne.jp
250-AUTH LOGIN CRAM-MD5 PLAIN ← プロバイダのSMTPサーバーが対応している認証方式
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
quit
221 mail.ba2.so-net.ne.jp
Connection closed by foreign host.

SMTPの認証設定

# vi /etc/postfix/main.cf
#以下を最終行へ追加
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/authinfo
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = CRAM-MD5,PLAIN

プロバイダのユーザー名とパスワードをauthinfoファイルに反映

# echo mail.ba2.so-net.ne.jp:587 tanaka:password > /etc/postfix/authinfo
SMTPサーバー名・・・プロバイダのSMTPサーバー名(例:mail.ba2.so-net.ne.jp)
ユーザー名・・・プロバイダのメールアカウント名(例:tanaka)
パスワード・・・プロバイダのメールパスワード(例:password)

root以外参照できないようにパーミッション変更

# chmod 640 /etc/postfix/authinfo

authinfo.dbを作成する

# postmap /etc/postfix/authinfo

再起動して設定を反映する。

# /etc/rc.d/init.d/postfix restart

備考

  • 私の場合、なぜか110番ポートだとメールが受信できず、995番ポートに設定するとできるようになった。調査が必要だね。











    

  • 最終更新:2012-04-12 19:02:22

このWIKIを編集するにはパスワード入力が必要です

認証パスワード