PostfixからGmailへメールを送れない

HTMLだとまだ文書をうまく整形できないので、
オリジナルのWord文書をPDF化した文書を貼り付けておきます。

1 PostfixからGmailへメールを送れない

201908CentOS 7.6におけるPostfix設定と設定後テストにおいて、
Postfix
からのメール送信で、
MAILER-DAEMONから下に示すようなエラーメールが返されGmailへメールを送れない、』
という現象が発生しました。

Gmail以外のメールアカウントへは、問題なくメールが送れています。

「送信元IPアドレスが許可されておらず、Gmailのメールサーバーへは送れない」とのことで、
「もし送りたいのであれば、ISPのメールサーバーからリレーしなさい」とというのです。

この現象は、全てのPostfixメールサーバーで起こる現象ではないようでした。
私の利用している環境においてのみ起こる現象のようです。

下に示すツールで調べてみると、自宅サーバーに割り当てられたIPアドレスは、
The Spamhaus Block List(SBL)に登録されていました。

どうも、これがGmail SMTPに転送を拒否される原因のようです。

mxtoolbox.com

blacklistalert.org


# トホホです。
#
わたしより前に使っていたどこかの組織がSPAM送信に使っていたようですわ。
#
やっぱ、国内最安値の固定IPですわな。
#

# スパム・リストからの削除依頼作業等は、時間的余裕があったら行いたいと思います。

2 対処法

1項で示した問題は、
エラーリターンメールの内容にしたがってメールは、自サーバーから直接送るのではなく、
Postfix
relaytransport機能を使って他のメールサーバーから送るようにしました。

ここでよく分からないのが、relaytransportの違いや使い分け!
どちらも他のSMTPサーバーにメールを転送します。

基本的には、
relay
は設定した1サーバーにのみ、
transport
はメール送信先アドレスによって異なるサーバーへ転送することが可能となります。

2.1 Gmail SMTPサーバーにリレーする

Gmailへメールを送られるようにしたいのであれば、
Gmail
SMTPサーバーにリレーするようにするのが最も手っ取り早いでしょう。

Gmail SMTPサーバーへリレーする方法は、
インターネットを検索すれば直ぐに見つかり、またそれほど面倒な設定ではありません。

たとえば、下に示すページなど。

Postfix からGmailでメール送信する方法

PostfixのメールをGMail経由で送る

確かにGmail SMTPサーバーへリレーすれば、
Gmail
のメールアドレスやGmail以外のメールアドレスにもメールを送信できるようになります。

ただし、
送信者のメールアドレスがリレーしたGmailのメールアドレスに書き換えられてしまいます。

たとえば、元のメールアドレスは「?????@dotiga.blog」で送信したはずだったのに、
Gmail SMTP
サーバーをリレーすることにより
Gmail
のメールアドレス「?????@gmail.com」に変更されてしまいます。

でも、これはあまりウレシいことではありませんよね。

2.2 メール送信先ごとにリレー先を使い分ける

そこで、Gmailアドレスへのメール送信ではGmail SMTPサーバーへ転送、
それ以外のメールアドレスは自サーバーのPostfixから送信する
transport
機能を使うようにしました。

以下に、ここで行ったtransport設定の詳細を示します。

(1)transport_maps項目の追加

Postfixの設定ファイルであるmain.cfに「transport_maps」項目を追加する。

transport_maps」項目は、
インストール時のオリジナルのmain.cfにこの項目はありません。

(2)transportファイルの作成

先の(1)で指定したパスのtransportファイルは既にインストールされていますので、
そのtransportファイルに示すような2行を最下行に追記します。

1行目は宛て先がGmailだったらGmailSMTPサーバーに転送する、
2
行目は宛て先がGmail以外だったらこのPostfixから直接メールを送る、
という記述になります。

これ以外の記述については、下に示すページに示されています。

Postfix manual – transport(5)

# 正直に言って分かりにくい文章ですわな。
#
今のところ先に示したことができればいいので、深追いはしませんでした。

(3)ハッシュDBの作成

(2)のファイルを元に
postmap
コマンドでハッシュ化してtransport.dbというファイルを作成します。

(4)設定の反映

後は、Postfixを起動するだけです。

main.cfにおけるrelayhostの指定は必要ありませんが、
Gmail SMTP
サーバーへ転送する際にはSMTP認証の設定が必要ですので、
実際にはmain.cfには下に示すような記述を追記することになります。


Gmail
SMTP認証の詳細な事柄については、
2.1 Gmail SMTPサーバーにリレーする」に全く同じですので、
ここでは省略させていただきます
(機会があれば、わたしも「Postfixのメール転送」について整理したいと思います)。

2.3 転送の優先順位

relaytransportは、同時記述が可能ということです。

もし両方を記述した場合、
どのように処理されるかを下に示しておきます。

宛先メールアドレスがtransport_mapsに見つかれば、そのリレー先に。

transport_mapsに見つからず、relayhostが設定されていれば、relayhostに。

relayhostが設定されていなければ、DNS MXレコードを参照。