🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
IMAP

IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。

Dovecot

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

POP

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

CentOS

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

SMTP

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

Q&A

解決済

1回答

6736閲覧

メールが受信出来ない(Postfix/Dovecot)

Nanohana

総合スコア123

IMAP

IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。

Dovecot

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

POP

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

CentOS

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

SMTP

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

0グッド

0クリップ

投稿2020/12/27 05:50

編集2020/12/30 10:47

centos7上でメールサーバーを構築しています。

[ユーザー名]@[ドメイン名]宛にgmailからメールを送っても、メールが届きません。(特にエラーで帰ってきている感じもない、タイムアウトで24時間かかる可能性はありますが...)
mailコマンドでメールを発出すると失敗します。
( echo "テストメール(本文)" | mail -s "テスト(件名)" -S smtp=smtp://localhost:587 -r ユーザー名@ドメイン 自分のユーザー名@gmail.com -v で送信)
ログを見ると

Dec 29 22:13:02 train-directory postfix/smtpd[27064]: fatal: no SASL authentication mechanisms Dec 29 18:37:48 train-directory postfix/master[24678]: warning: process /usr/libexec/postfix/smtpd pid 24888 exit status 1 Dec 29 18:37:48 train-directory postfix/master[24678]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling

となっています。
no SASL authentication mechanismsで止まっていますが、
https://www.ipentec.com/document/linux-postfix-warning-xsasl-cyrus-server-get-mechanism-list-no-mechanism-available の対処などは確認済みです。
思いつく対処策はなくなりました。どんな設定不備が考えられますか?

環境
CentOS Linux release 7.5.1804 (Core)
dovecot --version 2.2.36
postconf | grep mail_version mail_version = 2.10.1

⭐ saslauthd のステータス

[root@サーバー名 ユーザー名]# systemctl -l status saslauthd ● saslauthd.service - SASL authentication daemon. Loaded: loaded (/usr/lib/systemd/system/saslauthd.service; enabled; vendor preset: disabled) Active: active (running) since 土 2020-12-26 18:57:55 JST; 2 days ago

⭐ postfix のステータス

[root@サーバー名 ユーザー名]# systemctl status postfix ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled) Active: active (running) since 火 2020-12-29 18:43:49 JST; 1min 18s ago

・さくらのVPS提供パケットフィルタの無効化は確認済

⭐ ファイアーウォールの設定

>>[root@サーバー名 ユーザー名]# firewall-cmd --permanent --add-service=smtp Warning: ALREADY_ENABLED: smtp success [root@サーバー名 ユーザー名]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: dhcpv6-client http https mysql nfs imap pop3 smtp-submission ports: 意図的に開けているポート/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

⭐ postfix/dovecotの設定

[root@サーバー名 lib]# postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases broken_sasl_auth_clients = yes command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 disable_vrfy_command = yes home_mailbox = Maildir/ html_directory = no inet_interfaces = all inet_protocols = all mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost myhostname = ドメイン名 mynetworks = 127.0.0.0/8 mynetworks_style = host newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES sample_directory = /usr/share/doc/postfix-2.10.1/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_path = inet:127.0.0.1:指定したポート番号※1 smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous smtpd_sasl_type = dovecot unknown_local_recipient_reject_code = 550 [root@サーバー名 lib]# dovecot -n # 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf # OS: CentOS Linux release 7.5 # Hostname: ホスト名 auth_debug = yes auth_mechanisms = plain login auth_verbose_passwords = yes disable_plaintext_auth = no first_valid_uid = 1000 mail_debug = yes mail_location = maildir:~/Maildir mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } protocols = imap pop3 service auth { inet_listener { port = 指定したポート番号※1 } unix_listener auth-userdb { group = postfix mode = 0660 user = postfix } } ssl_cert = </etc/letsencrypt/live/ドメイン名/fullchain.pem ssl_key = # hidden, use -P to show it userdb { driver = passwd }

⭐ saslauthdの状態

[root@サーバー名 private]# testsaslauthd -u ユーザー名 -p パスワード -s smtp 0: OK "Success."

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

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

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

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

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

A_kirisaki

2020/12/27 06:03 編集

`dig <domain.name> mx` で `MX` レコード見てもらえます?
yukky1201

2020/12/27 06:20

PostfixはSMTP(メール中継してメールボックスに入れるまで)のプロトコル、 DovecotはPOP/IMAP(メールボックスから取り出す)のプロトコルです。 どちらの質問ですか?(質問を見るとSMTP(Postfix)の方でしょうか)
Nanohana

2020/12/27 07:32

[root@サーバー名 ユーザー名]# dig [ドメイン名] mx ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> [ドメイン名] mx ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45540 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;[ドメイン名]. IN MX ;; ANSWER SECTION: [ドメイン名]. 120 IN MX 10 mail.[ドメイン名]. ;; Query time: 17 msec ;; SERVER: 210.188.224.11#53(210.188.224.11) ;; WHEN: 日 12月 27 16:26:39 JST 2020 ;; MSG SIZE rcvd: 69 mail.[ドメイン名]は過去の遺物で未使用です。 これってまさか[ドメイン名]のMXレコード設定漏れでしょうか?
Nanohana

2020/12/27 07:33

>>PostfixはSMTP(メール中継してメールボックスに入れるまで)のプロトコル、 DovecotはPOP/IMAP(メールボックスから取り出す)のプロトコルです。 どちらの質問ですか?(質問を見るとSMTP(Postfix)の方でしょうか) 両方ですね。どちらでもメール到達が出来ない状況です。
Nanohana

2020/12/27 08:38

A_kirisakiさんご連絡ありがとうございます。ご指摘の件、確認し修正しましたがまだメールは確認できません。 ちょっと気になっているのが、 メールをサーバが受けたら /var/log/maillog に何かしら残るのが普通な気がしていますが、残らないものなのでしょうか? 現行何もログが出力されていません。もしかしてサーバーにメールが来ていないのでしょうかね...?
Nanohana

2020/12/27 10:06

確認ありがとうございます。 postfixのログを貼り付けました。
A_kirisaki

2020/12/27 10:24

あー、SASL という SMTP の認証でコケてますね。そのへんの設定はようわからんので「Postfix dovecot sasl」あたりをキーワードに調べると良さそうです。バージョンによって変わりそうなのでそのへんもご注意を。
A_kirisaki

2020/12/27 10:29

ちなみに自前メールサーバは「「「闇」」」なので心してかかりましょう。特に送信とか大変だと思います(ちゃんとしないとスパムだと思われちゃう)。
TaichiYanagiya

2020/12/27 14:24

受信について、 (1) mail.[ドメイン名] の Aレコード (IPアドレス) は設定済みで、CentOS 7 のものと一致していますか? (2) ファイアーウォールなどで、外部から TCP 25番ポートへの接続を許可していますか? (3) 送信の際のログで、smtpd で設定不備のエラーが出ているので、受信でもおそらく同じエラーとなると思います。設定内容(postconf -n)を質問に追記ください。
Nanohana

2020/12/28 09:23

ご確認ありがとうございます。 以下のとおりです。 1. DNSの設定 a @ <サーバーのIPv4アドレス> aaaa @ <サーバーのIPv6アドレス> mx mail 10 のみの設定であったため mx @ <ドメイン名> の設定を追加しました 2 [root@サーバー名 ユーザー名]# firewall-cmd --list-all public (active) target: default <!— 省略 —> interfaces: XXXX CCC services: dhcpv6-client http https mysql nfs imap pop3 smtp-submission ports: <開けているポート番号>/tcp <!— 省略 —> となっており、SMTPは空いていると思います。 3. [root@サーバー名 ユーザー名]# postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases broken_sasl_auth_clients = yes command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 home_mailbox = Maildir/ html_directory = no inet_interfaces = all inet_protocols = all mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost myhostname = <ホスト名> mynetworks_style = host newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES sample_directory = /usr/share/doc/postfix-2.10.1/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_path = inet:127.0.0.1:<開けているポート番号> smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous smtpd_sasl_type = dovecot unknown_local_recipient_reject_code = 550
TaichiYanagiya

2020/12/28 11:32

追加情報はコメント欄ではなく、質問を編集して追記した方が回答がつきやすいと思います。
scsi

2020/12/28 14:00

fwでsmtp空いてないじゃないですか。smtpは25portですよ。
Nanohana

2020/12/29 13:19

質問に追記しました。
guest

回答1

0

ベストアンサー

mx @ <ドメイン名>
の設定を追加しました

MXレコードに「mail.<ドメイン名>」と「<ドメイン名>」の 2つが設定されているのですか?
「mail.<ドメイン名>」の Aレコードが存在しないのであれば、MXレコードから「mail.<ドメイン名>」を削除する必要があります。

services: dhcpv6-client http https mysql nfs imap pop3 smtp-submission
となっており、SMTPは空いていると思います。

smtp-submission は TCP 587番ポートです。
受信は TCP 25番ポートでのみ受け取りますので、firewall-cmd [--permanent] --add-service=smtp で許可する必要があります。
上位にファイアーウォール等がある場合はそちらも許可が必要です。

smtpd_sasl_path = inet:127.0.0.1:<開けているポート番号>
smtpd_sasl_type = dovecot

dovecot 側の認証を postfix から使うのであれば、smtpd_sasl_path には dovecot 側 service auth で用意している inet_listener (ポート番号)、または、unix_listener (ソケットファイルパス)を設定します。

参考:
HowTo/PostfixAndDovecotSASL - Dovecot Wiki


(2020/12/30 01:03) 追記

firewall-cmd --list-all
services: dhcpv6-client http https mysql nfs imap pop3 smtp-submission

--permanent で設定した内容が反映されていないです。
firewall-cmd --reload で再読み込みすると反映されます。

postfix/smtpd[27064]: fatal: no SASL authentication mechanisms

メール送信の SMTP-Auth について、smtpd_sasl_type = dovecot 設定で、dovecot で認証するのであれば、dovecot 側の設定も必要です(最初の回答の参考 URL)。
よくわからなければ、まずは、25番ポートで受信だけ確認するといいのでは?


(2020/12/30 23:04) 追記

追記で、saslauthd の情報がありますが、SMTP-Auth の認証を dovecot ではなく saslauthd で行ないたいということでしょうか?
もし、そうであれば、main.cf の変更が必要です。

(main.cf SASL 関連抜粋) smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname # smtpd_sasl_path = #(削除) smtpd_sasl_security_options = noanonymous #(noplaintext を削除) smtpd_sasl_tls_security_options = noanonymous # smtpd_sasl_type = dovecot #(削除)

saslauthd + PAM の場合、平文(PLAIN, LOGIN)しか認証できないので、smtpd_sasl_security_options から noplaintext を削除します。

受信のテストは、postfix 同梱の smtp-source コマンドを使うことができます。

$ smtp-source -v -f (送信元メールアドレス) -t (宛先メールアドレス) localhost:25

でもそもそも25番であまり開けるべきじゃない気がしてます。

外部からの受信は TCP 25番ポートのみで可能ですので、恒常的に開ける必要があります。

投稿2020/12/28 11:49

編集2020/12/30 14:04
TaichiYanagiya

総合スコア12173

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

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

Nanohana

2020/12/30 10:15 編集

>>-permanent で設定した内容が反映されていないです。 f>>irewall-cmd --reload で再読み込みすると反映されます。 反映させました。 >>postfix/smtpd[27064]: fatal: no SASL authentication mechanisms >>メール送信の SMTP-Auth について、smtpd_sasl_type = dovecot 設定で、dovecot で認証するのであれば、dovecot 側の設定も必要です(最初の回答の参考 URL)。 >>よくわからなければ、まずは、25番ポートで受信だけ確認するといいのでは? postfix/dovecotの設定 の欄にdovecot側の設定も貼り付けております。 25番ポートで受信だけ確認というのが、何をすればよいのかよくわかりません 参考までにポートの状態は以下のとおりです。 [root@サーバー名 private]# lsof -i:25 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME master 6270 root 13u IPv4 78225853 0t0 TCP *:smtp (LISTEN) master 6270 root 14u IPv6 78225854 0t0 TCP *:smtp (LISTEN) でもそもそも25番であまり開けるべきじゃない気がしてます。
scsi

2020/12/30 11:01 編集

25portを開けないと外部からメールが届きませんがそれでいいんですか? それでいいならdovecotは必要ないと思いますよ。
Nanohana

2020/12/30 11:36 編集

いや、25番は空いてはますよ。↑で記載のとおりです。 けれど587番を使うべきで、あくまで恒常的に開けるべきではないのでは?という意味です。
Nanohana

2020/12/30 14:28

ありがとうございます。解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問