Postfix の設定例 (送信専用)
[履歴] [最終更新] (2016/06/03 22:06:55)
最近の投稿
注目の記事

概要

外部の SMTP サーバを直接指定して利用するスクリプト

の場合は気になりませんが、無指定の場合や mail コマンドなどは、ローカルホストの SMTP サービスを利用しようとします。そのような場合のために、SMTP サービスの Postfix デーモンをローカルホストで起動する際の設定例を記載します。

設定の反映方法

/etc/postfix/main.cf を編集して、設定を再読み込みします。

$ sudo service postfix reload

設定例

Postfix Basic Configuration をもとに設定します。

ドメイン名

他のパラメータの設定値として利用される mydomain を設定します。

@@ -81,6 +81,7 @@
 # parameters.
 #
 #mydomain = domain.tld
+mydomain = qoosky.io    
 # SENDING MAIL
 # 

メール送信元

メールの From に指定する値を myorigin に設定します。先程登録した mydomain を利用するとよいです。

@@ -96,7 +97,7 @@
 # to recipient addresses that have no @domain part.
 #
 #myorigin = $myhostname
-#myorigin = $mydomain
+myorigin = $mydomain

 # RECEIVING MAIL

自分宛のメールであると認識させる

メールサーバには転送 (relay) という機能があり、自分宛でないメールが送られてきたら、リレー先として設定された SMTP サーバに転送するようになっています。宛先が自分のホスト名 $myhostname やドメイン名 $mydomain に関係している場合は転送せずに自分宛として受信するように設定します。

@@ -161,8 +162,8 @@
 #
 # See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
 #
-mydestination = $myhostname, localhost.$mydomain, localhost
-#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
+#mydestination = $myhostname, localhost.$mydomain, localhost
+mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
 #  mail.$mydomain, www.$mydomain, ftp.$mydomain

例えば、宛先を vagrant@qoosky.io とした場合は転送されずに vagrant ユーザに通知されます。

新しいメールが /var/spool/mail/vagrant にあります

ローカルの SMTP クライアントだけが利用できるようにする

SMTP サービスを postfix で提供したときに、それを利用できる SMTP クライアントの範囲を設定します。よくある設定であれば mynetworks_style のために用意された設定項目を利用します。mynetworks_style で用意された設定項目では対応できない場合は mynetworks を利用します。mynetworks が設定されている場合は mynetworks_style が設定されていたとしても無視されます。ローカルホストで動作するクライアントからのみのアクセスを許可したいため host という項目を mynetworks_style に設定しました。これで外部のサーバにある SMTP クライアントからのメール送信要求を拒否できます。スパム送信のための踏み台として利用される恐れが低減します。

@@ -248,7 +249,7 @@
 # 
 #mynetworks_style = class
 #mynetworks_style = subnet
-#mynetworks_style = host
+mynetworks_style = host

 # Alternatively, you can specify the mynetworks list by hand, in
 # which case Postfix ignores the mynetworks_style setting.

信頼されていないクライアントからは利用できないようにする

mynetworks_style または mynetworks で指定したクライアントは信頼されているため、任意の宛先のメールを送信できます。ただ、それ以外のクライアントは実は送信できない訳ではなく relay_domains で指定された宛先であればメールを送信できてしまいます。そこで relay_domains を空の値に設定して、信頼されていないクライアントからは完全に利用できないようにしておきます。スパム送信のための踏み台として利用される恐れが低減します。

@@ -294,6 +295,7 @@
 # permit_mx_backup restriction description in postconf(5).
 #
 #relay_domains = $mydestination
+relay_domains =

 # INTERNET OR INTRANET

リレー先のメール送信サーバの設定 (任意)

直接インターネットにメールを送信するためには

relayhost =

と空の値を設定します。しかしながら、その場合は送信するメールがスパム判定されないために DKIM や SPF の DNS 設定を自分ですべて行わないといけないため大変です。Amazon SES や Google の SMTP サーバ、あるいは社内であれば専用の SMTP サーバにリレーしてメールを送信すると設定が簡単です。

認証が不要な社内 SMTP サーバ 25 番ポートにリレー

@@ -315,6 +317,15 @@
 #relayhost = [mailserver.isp.tld]
 #relayhost = uucphost
 #relayhost = [an.ip.add.ress]
+relayhost = [mail.mycompany.com]

 # REJECTING UNKNOWN RELAY USERS
 #

Amazon SES にリレー

@@ -315,6 +317,15 @@
 #relayhost = [mailserver.isp.tld]
 #relayhost = uucphost
 #relayhost = [an.ip.add.ress]
+relayhost = [email-smtp.us-west-2.amazonaws.com]:587  ←Oregonの場合
+smtp_use_tls = yes
+smtp_sasl_auth_enable = yes
+smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
+smtp_sasl_tls_security_options = noanonymous
+smtp_sasl_mechanism_filter = plain
+smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt

 # REJECTING UNKNOWN RELAY USERS
 #

/etc/postfix/main.cf の設定は上のようになります。別途認証のための sasl 設定なども必要です。こちらのページなどを参考にします。

Google SMTP サーバにリレー

@@ -315,6 +317,15 @@
 #relayhost = [mailserver.isp.tld]
 #relayhost = uucphost
 #relayhost = [an.ip.add.ress]
+relayhost = [smtp.gmail.com]:587
+smtp_use_tls = yes
+smtp_sasl_auth_enable = yes
+smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
+smtp_sasl_tls_security_options = noanonymous
+smtp_sasl_mechanism_filter = plain
+smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt

 # REJECTING UNKNOWN RELAY USERS
 #

/etc/postfix/main.cf の設定は上のようになります。別途認証のための sasl 設定なども必要です。

関連ページ