設定VPSのPostfixmain.cfローカルサーバのPostfixmain.cftransport_mapssmtp_sasl_password_mapsinet_protocolsPostfixに宛先ドメイン別リレーさせる2024/01/05VPSで動かしていたメール送信プログラムをローカルサーバで実行させた時にGoogleのSMTPに拒否されたのでその対処を行ったときの記録。概要S社のVPSで動作させていたプログラムでは以下の種類のメールを送信していた。部屋の環境はプロバイダG社の回線を使っておりメール送信に際してはG社で指定するSMTPサーバ経由で送信を行っている。このプログラムを部屋のローカルサーバで稼働させたところ、gmail宛のメールがSMTPでアクセス拒否されてしまった。調べたところ、gmail側がG社ネットワークからの接続をほとんど拒否している状態らしい。※SPAM発信元として利用されまくったせいかもなぁ...できるだけ既存の送信経路を変更したくない。説明中にブラケットで囲んだ表記が出てくる。“[8.8.8.8]“の意となる。“[mail.hoge.jp]“の意となる。VPSのPostfixmain.cfmain.cf内パラメタmynetworksにローカルサーバ(Router)のIPアドレスを追加する。IPアドレス/32mynetworksに登録されたネットワークからは認証等無しに接続できる。怖いならパラメタsmtpdシリーズの説明を調べてID/PASSを設定する事も可能。ローカルサーバのPostfixmain.cftransport_mapsでリレー先を選択させるので、main.cf内のパラメタrelayhostの指定をコメントアウトする。元々はG社指定SMTPサーバをパラメタrelayhostで指定していた。次に以下の指定を追記する。ipv4transport_mapsパラメタtransport_mapsは宛先ドメイン毎にリレー先を指定するマップになる。/usr/local/etc/postfix/transportにファイルを作る。smtp:[G社指定SMTPサーバアドレス]:G社指定のポート番号この例は、宛先がローカル無いならリレーせず、gmail.comドメイン宛ならVPSへリレーし、それら以外はG社指定SMTPサーバへリレーする。postmapコマンドで/usr/local/etc/postfix/transport.dbを生成する。main.cfで/usr/local/etc/postfix/transportと記載しているが実際に使用するのは/usr/local/etc/postfix/transport.dbになる。/usr/local/etc/postfix/transportsmtp_sasl_password_mapsうちの環境ではパラメタsmtp_sasl_password_mapsの指定も必要だった。これは、G社指定SMTPサーバはユーザ認証を必要としている為、/usr/local/etc/postfix/relay_passwdを作成し指定する必要がある。ユーザID:パスワードpostmapコマンドで/usr/local/etc/postfix/relay_passwd.dbを生成する。main.cfで/usr/local/etc/postfix/relay_passwdと記載しているが実際に使用するのは/usr/local/etc/postfix/relay_passwd.dbになる。/usr/local/etc/postfix/relay_passwdinet_protocolsこの指定は状況による。SPFレコードでipv4のアドレスを設定していた場合、環境によってはipv6で通信が行われSMTPサーバからキックアウトされてしまう。このパラメタを明示的に設定する。allもしダメであればipv4を明示する。k896951ページ用ツール文書の先頭へ。