HTMLのままだと、
意図した形式で表示するのは面倒ですので、
Wordで作成したPDFを貼り付けておきます。

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

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

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

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

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

下に示すツールで調べてみると、自宅サーバーに割り当てられたIPアドレスは、

The Spamhaus Block List(SBL)

に登録されていました。

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

mxtoolbox.com
blacklistalert.org

# トホホですわな。
# 自宅サーバーに割り当てられたIPアドレスは、どこかの迷惑メール送信業者が以前SPAM送信に使っていたようです。
# やっぱ、国内最安値の固定IPですわー!
#
# スパム・リストからの削除依頼作業等は、時間的余裕があったら行いたいと思います。

2 対処法

1項で示した問題は、
エラーリターンメールの内容にしたがって、
Gmail宛のメールは自サーバーから直接送るのではなく、
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.software」だったはずなのに、
Gmail SMTPサーバーをリレーすることにより
Gmailのメールアドレス
?????@gmail.com」に変更送信
されてしまいます。

これは、期待した結果とかなり違いますよね。

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

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

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

(1)transport_maps項目の追加

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

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

(2)transportファイルの作成

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

1行目は
宛て先がGmailだったらGmailのSMTPサーバーに転送する、

2行目は
宛て先がGmail以外だったらこのPostfixから直接メールを送る、

という記述になります。

2行目の記述は、書かなくてもかまいません。

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

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レコードを参照。


以上