外部の 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 サービスを 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 サーバにリレーしてメールを送信すると設定が簡単です。
@@ -315,6 +317,15 @@
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
+relayhost = [mail.mycompany.com]
# REJECTING UNKNOWN RELAY USERS
#
@@ -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 設定なども必要です。こちらのページなどを参考にします。
@@ -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 設定なども必要です。