質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

Q&A

解決済

1回答

1337閲覧

CentOS7 postfixでメールの転送設定ができない

YoshinagaK

総合スコア21

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

0グッド

0クリップ

投稿2023/02/14 05:13

編集2023/02/23 08:32

実現したいこと

CentOS7でpostfixを用いてメールの送信ができるようにしたい。そのために外部のメールサーバに転送したい。

前提

●CentOSとpostfixのバージョンは以下です。postfixはプレインストールされていたものです。

$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
$ postconf | grep mail_version
mail_version = 2.10.1
milter_macro_v = $mail_name $mail_version

●SELinuxとfirewalldは無効化してあります。

●以下をインストールしました。
cyrus-sasl
cyrus-sasl-plain
cyrus-sasl-md5

●/etc/postfix/main.cfの内容をオリジナルから以下のように変更しました。

$ diff main.cf main.cf-org
113c113
< inet_interfaces = all
---
> #inet_interfaces = all
116c116
< #inet_interfaces = localhost
---
> inet_interfaces = localhost
318d317
< relayhost = [smtp.xxxxxx.co.jp]:587
681,687d679
<
< smtp_use_tls = yes
< smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
< smtpd_sasl_auth_enable = yes
< smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
< smtp_sasl_mechanism_filter = cram-md5, plain, login

●/etc/postfix/sasl_passwdを以下のように作りました。

$ echo "[smtp.xxxxxx.co.jp]:587 zzzz@xxxxxx.co.jp:password" > /etc/postfix/sasl_passwd
$ chmod 600 /etc/postfix/sasl_passwd
$ postmap hash:/etc/postfix/sasl_passwd

●systemctl restart postfixを実行して再起動しました。

●動作確認として以下を実行しました。

$ echo "testtest" | mail -s "test" zzzz@xxxxxx.co.jp

発生している問題・エラーメッセージ

/var/log/maillogが以下のようになります。

Feb 14 13:56:53 サーバ名 postfix/smtp[21625]: 0D3643E1EE2: to=zzzz@xxxxxx.co.jp, relay=smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX]:587, delay=0.43, delays=0.02/0.02/0.28/0.1, dsn=5.7.1, status=bounced (host smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX] said: 554 5.7.1 <root@サーバ名.localdomain>: Sender address rejected: Access denied (in reply to RCPT TO command))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

認証を試みずに拒否されています。
smtpd_sasl_auth_enable = yes (受信側) ではなく smtp_sasl_auth_enable = yes (送信側) です。


(2023/02/14 23:59) 追記

postfix/smtp[7084]: warning: SASL authentication failure: No worthy mechs found

認証方式 (cram-md5, plain, login など) が Postfix と相手 MTA とで一致するものがあったけれど、実装されていない(ライブラリが見つからない)ということだと思います。
cyrus-sasl-plain, cyrus-sasl-md5 が正しくインストールされているか確認ください。


(2023/02/15 13:20) 追記

smtp_sasl_security_options = noanonymous を設定してみてください。
(default: noplaintext, noanonymous から noplaintext をはずす)

投稿2023/02/14 08:44

編集2023/02/15 04:20
TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YoshinagaK

2023/02/14 10:22

smtp_sasl_auth_enable = yes のときは、以下のようなメッセージになります。 Feb 13 16:48:46 サーバ名 postfix/smtp[7084]: warning: SASL authentication failure: No worthy mechs found Feb 13 16:48:46 サーバ名 postfix/smtp[7084]: 7BEAC3D7249: to=<zzzz@xxxxxx.co.jp>, relay=smtp.xxxxxx.co.jp[216.230.252.20]:587, delay=2261, delays=2261/0/0.33/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX]: no mechanism available)
YoshinagaK

2023/02/15 02:54 編集

転送対象のメールアドレスは平文のパスワード認証なので、smtp_sasl_mechanism_filter = plainのみとしました。  # diff main.cf main.cf-org  113c113  < inet_interfaces = all  ---  > #inet_interfaces = all  116c116  < #inet_interfaces = localhost  ---  > inet_interfaces = localhost  318d317  < relayhost = [smtp.xxxxxx.co.jp]:587  681,687d679  <  < smtp_use_tls = yes  < smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt  < smtp_sasl_auth_enable = yes  < smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd  < smtp_sasl_mechanism_filter = plain cyrusのインストールは以下のようになっています。  # yum list installed | grep cyrus cyrus-sasl.x86_64 2.1.26-24.el7_9 @updates cyrus-sasl-lib.x86_64 2.1.26-24.el7_9 @updates cyrus-sasl-md5.x86_64 2.1.26-24.el7_9 @updates cyrus-sasl-plain.x86_64 2.1.26-24.el7_9 @updates  このときに/var/log/maillogは以下のようになっています。 Feb 15 11:42:17 サーバー名 postfix/smtp[15667]: B2F563E25A9: to=<zzzz@xxxxxx.co.jp>, relay=smtp.xxxxxxx.co.jp[XXX.XXX.XXX.XXX]:587, delay=0.51, delays=0.02/0.02/0.47/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX]: no mechanism available)
YoshinagaK

2023/02/15 04:54

設定を以下のようにしました。  # diff main.cf main.cf-org  113c113  < inet_interfaces = all  ---  > #inet_interfaces = all  116c116  < #inet_interfaces = localhost  ---  > inet_interfaces = localhost  318d317  < relayhost = [smtp.xxxxxx.co.jp]:587  681,687d679  <  < smtp_use_tls = yes  < smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt  < smtp_sasl_auth_enable = yes  < smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd  < smtp_sasl_security_options = noanonymous  < smtp_sasl_mechanism_filter = plain このときに/var/log/maillogは以下のようになっています。 Feb 15 13:46:26 サーバ名 postfix/smtp[19351]: F21DF3D7252: to=<zzzz@xxxxxx.co.jp>, relay=smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX]:587, delay=0.64, delays=0.03/0.02/0.47/0.13, dsn=5.7.1, status=bounced (host smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX] said: 554 5.7.1 <root@サーバ名.localdomain>: Sender address rejected: Access denied (in reply to RCPT TO command))
TaichiYanagiya

2023/02/15 06:51

うーん、振り出しに戻ってしまいましたね。 > 認証を試みずに拒否されています。
YoshinagaK

2023/02/15 07:53

送り先のサーバではねられているようなことはないでしょうか。 送り先にgmailを設定する時に、安全性の低いアプリを許可が必要という記載をいくつか見ました。今回の送り先はgmailではありませんが。
TaichiYanagiya

2023/02/15 08:16

> 送り先のサーバではねられているようなことはないでしょうか。 よく見ると "Sender address rejected" と返ってきているので、envelope from = <root@サーバ名.localdomain> が拒否されているのかもしれません。 推測ですが、ドメイン部「@サーバ名.localdomain」の DNS MX, A のどちらも名前解決できないとか、認証ユーザー名と envelope from が違うとか。
YoshinagaK

2023/02/18 02:08

仰る通り送信元のサーバのDNS MX,Aの設定ができていなかったので追加しました。 NAME TYPE TTL VALUE bbbb MX 86400 10 mail.bbbb.aaaaaa.net bbbb A 86400 AAA.AAA.AAA.AAA mail.bbbb A 86400 AAA.AAA.AAA.AAA としました。postfixを以下のように設定しました。 # diff main.cf main.cf-org 77d76 < myhostname = mail.bbbb.aaaaaa.net 85d83 < mydomain = bbbb.aaaaaa.net 101c99 < myorigin = $mydomain --- > #myorigin = $mydomain 115c113 < inet_interfaces = all --- > #inet_interfaces = all 118c116 < #inet_interfaces = localhost --- > inet_interfaces = localhost 320d317 < relayhost = [smtp.xxxxxx.co.jp]:587 683,689d679 < < smtp_use_tls = yes < smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt < smtp_sasl_auth_enable = yes < smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd < smtp_sasl_security_options = noanonymous < smtp_sasl_mechanism_filter = plain のときに Feb 18 10:47:55 サーバ名 postfix/smtp[22543]: 431633E1B69: to=<zzzz@xxxxxx.co.jp>, relay=smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX]:587, delay=0.72, delays=0.03/0.03/0.56/0.1, dsn=5.7.1, status=bounced (host smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX] said: 554 5.7.1 <root@bbbb.aaaaaa.net>: Sender address rejected: Access denied (in reply to RCPT TO command)) が出て、また Feb 18 10:47:56 サーバ名 postfix/smtp[22543]: 11E563E1B6A: to=<root@bbbb.aaaaaa.net>, relay=smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX]:587, delay=0.5, delays=0/0/0.4/0.1, dsn=5.7.1, status=bounced (host smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX] said: 554 5.7.1 <>: Sender address rejected: Access denied (in reply to RCPT TO command)) が出ました。
TaichiYanagiya

2023/02/18 06:59

DNS が問題ないとすると、「認証ユーザー名と envelope from が違う」可能性はありませんか? 2つめのログは envelope from=<> なのでバウンスメール(エラーメール)です。 バウンスメールは relayhost に送らずに別の受信可能な MTA に送った方がいいです。 mydestination に元の送信者のドメイン(bbbb.aaaaaa.net)を含めてこの Postfix で受信(スプール)するか、元々このドメインのメールサーバーが存在するのであれば transport_maps で認証なしで転送するか。
YoshinagaK

2023/02/18 10:11

2つ目はバウンスメールということなので、まずは1つ目の解決に取り組みたいと思います。 「認証ユーザー名と envelope from が違う」可能性についてですが、それを確認するにはどうしたらいいのでしょうか。
TaichiYanagiya

2023/02/18 13:47

envelope from を認証ユーザー/メールアドレス(設定例では zzzz@xxxxxx.co.jp)にしてメールを送信します。 sendmail コマンドだと "sendmail -r 送信者アドレス 宛先アドレス" です。 (例) echo -en 'Subject: test\n\ntesttest\n' | sendmail -r zzzz@xxxxxx.co.jp zzzz@xxxxxx.co.jp これでも "Sender address rejected" となるのであれば、リレー先メールサーバ側に問い合わせないとわからないです。
YoshinagaK

2023/02/19 10:55 編集

今度は送られました。 Feb 19 19:41:01 サーバ名 postfix/smtp[15738]: 2CA3D3E1B72: to=<zzzz@xxxxxx.co.jp>, relay=smtp.xxxxxx.co.jp[XXX.XXX.XXX.XXX]:587, delay=0.83, delays=0.02/0.01/0.57/0.22, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as C72A711EED9)
TaichiYanagiya

2023/02/19 13:26

リレー先メールサーバーの仕様で、「SMTP 認証、かつ、envelope from=<認証ユーザーのメールアドレス>」であることが必須条件なのでしょう。
YoshinagaK

2023/02/21 08:19

転送先をgmailにしました。sasl_passwdファイルを作り直しています。 # diff main.cf main.cf-org 77d76 < myhostname = mail.bbbb.aaaaaa.net 85d83 < mydomain = bbbb.aaaaaa.net 101c99 < myorigin = $mydomain --- > #myorigin = $mydomain 115c113 < inet_interfaces = all --- > #inet_interfaces = all 118c116 < #inet_interfaces = localhost --- > inet_interfaces = localhost 320d317 < relayhost = [smtp.gmail.com]:587 683,689d679 < < smtp_use_tls = yes < smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt < smtp_sasl_auth_enable = yes < smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd < smtp_sasl_security_options = noanonymous < smtp_sasl_mechanism_filter = plain において Feb 21 17:06:47 i-17100000245070 postfix/qmgr[25578]: 03DBD3EAC1F: from=<root@bbbb.aaaaaa.net>, size=466, nrcpt=1 (queue active) Feb 21 17:06:47 i-17100000245070 postfix/smtp[25860]: connect to smtp.gmail.com[2404:6800:4008:c13::6c]:587: Network is unreachable Feb 21 17:06:48 i-17100000245070 postfix/smtp[25860]: 03DBD3EAC1F: to=<wwwwwwww@gmail.com>, relay=smtp.gmail.com[142.250.157.109]:587, delay=1.6, delays=0.03/0.04/1.5/0, dsn=4.7.8, status=deferred (SASL authentication failed; server smtp.gmail.com[142.250.157.109] said: 535-5.7.8 Username and Password not accepted. Learn more at?535 5.7.8 https://support.google.com/mail/?p=BadCredentials x4-20020a17090aa38400b00233e860f69esm1189655pjp.56 - gsmtp)
TaichiYanagiya

2023/02/21 09:28

smtp.gmail.com からの応答メッセージの URL にあるとおり、 「2 段階認証プロセスを使用している場合は、アプリ パスワードを使ってログインしてみます。 」、 「2 段階認証プロセスを使用していない場合は、安全性の低いアプリがアカウントにアクセスすることを許可します。」 あたりを確認ください。
YoshinagaK

2023/02/22 07:19 編集

https://support.google.com/accounts/answer/6010255 「アカウントを安全に保つため、2022 年 5 月 30 日より、Google は、ユーザー名とパスワードのみで Google アカウントにログインするサードパーティ製のアプリとデバイスについてサポートを終了いたします。」 とあります。これによってgmailへの転送設定は不可になったということでしょうか。 現状で転送設定ができないなら、relayhostは用いずに、サーバから直接目的のアドレスにメール送信する方法を取るようにします。
YoshinagaK

2023/02/22 07:24

以下のように設定して、サーバから目的としたアドレスにメールが送れるようになりました。 # diff main.cf main.cf-org 77d76 < myhostname = mail.bbbb.aaaaaaa.net 85d83 < mydomain = bbbb.aaaaaa.net 101c99 < myorigin = $mydomain --- > #myorigin = $mydomain 115c113 < inet_interfaces = all --- > #inet_interfaces = all 118c116 < #inet_interfaces = localhost --- > inet_interfaces = localhost 121c119 < inet_protocols = ipv4 --- > inet_protocols = all 問題解決のためには送信元のサーバのDNS MX,Aの設定が肝でした。 いろいろ教えていただきありがとうございました。
TaichiYanagiya

2023/02/22 13:23

やりたいことは単にメールを送信したかったということですか? リレー先を使う話は何だったのでしょうか。
YoshinagaK

2023/02/22 23:32

サーバメンテナンス監視ツールZabbixからアラートメールを出すのが目的でした。そのために他のSMTPサーバを利用する方法が推奨されていて、relayhostを使う方法を検討していました。しかし、現状ではgmailなどのセキュリティの関係でできないと判断しました。 それに変わる方法として、自前で送信サーバをつくる方法でやろうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問