プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。

最近だと思うのですがPostfixでドコモメールに送信すると届くまで10分ぐらいかかるようになりました。

ドコモが何らかの制限をかけたのでしょうか。
あるいはPostfixの設定を適切に行えば解決できるのでしょうか。

また、テストを何回か繰り返すうちに本文の文字数も関係しているように思えてきました。
本文の文字数が600~700バイト以上になると1日たっても届きません。
しかし本文が700バイト以上になる事など普通にあり得るので、そんな制限をドコモがかけるとも思えませんので謎です。

・メール配送に時間がかかる件
・メールの文字数によって届いたり届かなかったりする件
以上2点のうち一方でも構いませんので、トラブルシューティング手順をご教示ください。

Postfixの設定値などは、指示いただいた時に早急に提示いたします。

A 回答 (6件)

既に調査中と思われますが、勝手な感想を言わせていただければ、最初の...



Cannot start TLS: handshake failure

がポイントと思いました。結局ご質問者様の発信メールは平文で発信されており、Gmailなどはそれも受け入れるが、ドコモは拒否する。但し繰り返し同じ形態で発信するとさすがのドコモも受け入れる。という事の様に思われました。

既にご覧になっているかも知れませんが、同様の不具合はgooのLinuxカテゴリにも見つかりました。

https://oshiete.goo.ne.jp/qa/13096211.html

但しこの件は最終的に解決したのかどうか明確ではありません。一方...

https://support.plesk.com/hc/en-us/articles/3600 …

の、"Resolution"を参照すると、解決には/etc/postfix/main.cfファイルに...

tls_medium_cipherlist

の設定項が必要だ、とあります。実際、ご質問者様ご提示のmai.cfファイル、及び先程掲げたgoo質問者の提示内容にもこの項目はありません。実際、ご質問者様ご提示のmai.cfファイル、及び先程掲げたgoo質問者の提示内容にもこの項目はありません。
また、もしこの件が明確に解決できたなら、gooに限らずネット上に結果を公開いただければ後に続く者への道標となると思います。
    • good
    • 0
この回答へのお礼

お世話になっております。
Postfixからドコモメールに送信するという案件は、そこそこに存在すると思っているのですが、なかなかコレだという記事を探し出せないでいます。

そして、ある記事からヒントを得て、Gメールの転送機能を経由してドコモメールに送信するという不本意な方法に落ち着きました。

しかし平文での送信がよろしくないとのご指摘、まさにその通りだと思いました。
現在Gmailは平文を受け入れていますが、近い将来ダメになるはずですので、やはりここは暗号化すべきだと思い、ネットを頼りに暗号化を試みましたが、未だにドコモへのメールは時間がかかっている状況です。
ログのstatusも相変わらずCannot start TLS: handshake failureを記録します。
先に提示したmain.cfに以下の設定項目の全て、または数個を追加して、何通りかの組み合わせを試しましたが、やはり遅延は改善されない状況です。
smtp_tls_CAfile = /etc/ssl/certs/ISRG_Root_X1.pem
smtp_tls_cert_file = /etc/letsencrypt/live/*/fullchain.pem
smtp_tls_key_file = /etc/letsencrypt/live/*/privkey.pem
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtpd_tls_CAfile = /etc/ssl/certs/ISRG_Root_X1.pem
smtpd_tls_security_level = may
(一部*で伏せています)

他にも設定すべき項目があるのでしょうか。

お礼日時:2023/03/08 15:25

No2です。

Postfixの通信ログを確認されては如何でしょうか。

https://qiita.com/ayumi_imai/items/a773f77623553 …

辺りを参照すると、その方法が記述されています。そしてこれの『⑤キューID「222F78322B9」につ...』を見ると通信相手からのエラーログを確認することができます。

...status=bounced (message size 14550452 exceeds size limit 10485760 of server XXX.XXX.XX...)

この例ではメールの容量超えを怒っているわけですが、ご質問者様のPostfixログにも同様なエラーが見つかるのではないでしょうか。
    • good
    • 0
この回答へのお礼

お手数をお掛けしております。
エラーログをIDで絞り込んで不要な情報を除く方法が学習できました。
この方法で先ほどヘッダ情報を解析したメールについてログを抽出してみました。
文字数や見やすさの関係で不要そうな情報を削ったり改行を入れたりしています。
送信直後と、その9分後、さらにその10分後、その20分後、さらにその40分後の計5回sutatusが記録されていました。
3回目と4回目のstatusの()内はIPアドレスが微妙に違うだけで残りは同文でしたので省略しました。
この()内の文でググると先輩方の奮闘記が出てきましたので順に読んで参ります。
他に助言がありましたらお願いします
12:31 postfix/smtp
relay=mfsmax.docomo.ne.jp
delays=0.01/0/0.41/0, dsn=4.7.5
status=deferred (Cannot start TLS: handshake failure)

12:40 postfix/error
relay=none
delays=530/0.01/0/0, dsn=4.4.2
status=deferred
(delivery temporarily suspended: lost connection with mfsmax.docomo.ne.jp[203.138.181.240] while sending end of data -- message may be sent more than once)

12:50 postfix/error
relay=none
delays=1130/0.01/0/0, dsn=4.4.2
status=deferred
(~[203.138.181.112]~)

13:10 postfix/error
relay=none
delays=2330/0/0/0, dsn=4.4.2
status=deferred
(~[203.138.180.240]~)

13:50 postfix/smtp
relay=mfsmax.docomo.ne.jp
delays=4730/0.01/0.17/0.1, dsn=2.0.0
status=sent (250 Requested mail action okay, completed)

お礼日時:2023/03/07 21:04

No2です。



https://toolbox.googleapps.com/apps/messageheader/

に問題のメールヘッダ部をコピペすると、メールサーバ及びメールサーバ間の遅延時間を整理してくれます。一度お試し下さい。
添付ファイルは私のメールの例ですが、KDDI系のメールサーバから別のサーバ(これもKDDI系と思われる)まで1秒の遅延。これがnifty系のサーバを経由しているのがわかります。nifty系では遅延時間は発生していません。

ご質問者様の環境ではこのリレーの間に遅延時間1時間とか、24時間が表示されるかも知れません。予想がヒットすれば、後はそのサーバが誰のものか、ということになります。ドメイン名を基に、その管理者を割り出すことも可能と思われます。
「Postfixでドコモメールに送信すると」の回答画像4
    • good
    • 0

No2です。

ヘッダ情報を見ないと何とも言えませんが、ヘッダー情報は下から上に向かって参照すれば良いと思います。

●一番下に"TO"/"FROM"、及びメールの発信時間が見つかるはずです。
●上に向かって時系列にReceived項が続き、夫々にドメイン名やIPアドレス、それから経由時の時間が見つかるはずです。

大凡遅延発生がドコモコンピュータ間で発生していることを把握できたら、ドコモに直接聞いてみるのが早いのではないでしょうか。その際、ご質問者様が発信した、そして遅延したメールのヘッダはその具体的な証拠になります。
メールヘッダも添えて問い合わせをすれば、ドコモも調査の端緒になるのではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
環境の関係か、ヘッダ情報の項目の順番がご案内と異なります。
ヘッダの先頭にFrom:があり、To:は、なんと2つのReceived:の間にあります。
2つのReceived:は、おっしゃる通り下の方が若い時間(送信時刻)になっています。上のReceived:が受信時刻になっています。
Received:が2つ(私のメールサーバーとドコモのメールサーバー)しかなく、またドコモ以外のメールサーバー(ヤフーメールやGメールなど)には遅延せずに遅れるため、ドコモに問い合わせてみました。
手始めにチャットでサポートを受けていましたが、解決せず、ドコモインフォメーションセンターを案内され、そこでいろいろ調査していただきましたが、結果解決せず、現在にいたります。
オペレーターの案内ではドコモのメールサーバーに届いていればドコモメールアプリの更新ボタンを押せば、サーバーに問い合わせて未受信のメールを全て受信できるので、このとき受信できないメールは、そもそもドコモのサーバーにまだ届いていない可能性が高く、ドコモでは対応できないとの事でした。
しかしドコモ以外には遅延なくすぐに届くので、謎です。。。

お礼日時:2023/03/06 18:23

e-mailは沢山のコンピュータを経由して相手側に届きますので、相手側に届いたメールをそのまま自分に返信してもらい、メールヘッダを参照することで遅延箇所を特定することができないでしょうか。

    • good
    • 0
この回答へのお礼

貴重な情報をありがとうございます。
相手側とは、ここでは私のアンドロイド端末であります。
ドコモメールアプリにヘッダを表示する機能がありましたので、返信せずにそのままスマホ画面で確認してみました。
ヘッダを読む事などほとんどありませんので、各項目をググりながら調査を進めて参りました。
結果
Received項目が2つありました。1つは私のPostfixで送信時刻に一致します。もう1つはmfsmax.docomo.ne.jpというドコモのメールサーバーで受信時刻に一致します。
つまり、メールは私のPostfixからいきなりドコモのサーバーに届いているということでしょうか。
つまり遅延箇所はドコモのサーバーと特定できたという認識で正しいでしょうか。
つまり何らかの理由でドコモが私のPostfixからの受信をあえて遅延させているのでしょうが、その理由が分からない状況です。

当方ドコモユーザーのため、あえてドコモメールを使う選択をしていましたが、こうなったらドコモメールにこだわりません。
やりたい事は、cronが何か出力したら、私のアンドロイド端末に通知が来るようにしたいだけです。つまりスクリプトがこけた時に、それを知る手段がほしいだけです。
これを実現する何かスマートな案はありますか。
複数の案をご提示いただけたら嬉しく存じます。

お礼日時:2023/03/06 14:12

メールの配送に時間がかかる原因は、複数考えられます。

まずはドコモのサーバーが過負荷になっている可能性があります。また、送信元のサーバーがブラックリストに登録されている場合、ドコモのサーバーで配信が遅延されることがあります。Postfixの設定が原因である可能性もありますので、設定値を提示いただければ、より具体的なアドバイスをすることができます。

一方、本文の文字数が増えると届かないという状況は、原因が特定できていません。ドコモが本文の文字数に関して制限を設けているという情報もありませんので、Postfixの設定値に何か問題があるか、もしくはドコモのサーバーでの処理に何らかの問題がある可能性があります。設定値を提示いただければ、より具体的なアドバイスをすることができます。また、ドコモに問い合わせてみることも検討してみてください。
    • good
    • 0
この回答へのお礼

貴重なお時間をありがとうございます。
ドコモのサーバーが過負荷になっているのなら10分ぐらいの遅延は我慢します。
しかし文字数が600~700バイト以上になると1日後に届く事もあるので、こちらは解決したいです。
ブラックリストの存在は聞いたことがあります。この場合、受信を拒否するのではなく、単に配送を送らせて帯域を確保しているという事でしょうか。
しかしそんなに大量の帯域を食う送信をした覚えはないため、ブラックリストの可能性は低いと考えます。
現在のmain.cfは次のとおりです。
(必要最小限の設定にしてあるつもりです)
(一部*で伏せています)
alias_maps = hash:/etc/aliases
biff = no
compatibility_level = 2
home_mailbox = maildir/
inet_protocols = ipv4
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost
mynetworks_style = subnet
#smtp_tls_CAfile = /etc/ssl/certs/ISRG_Root_X1.pem
#smtp_tls_cert_file = /etc/letsencrypt/live/*/fullchain.pem
#smtp_tls_key_file = /etc/letsencrypt/live/*/privkey.pem
smtp_use_tls = yes
smtpd_helo_required = yes
smtpd_sender_restrictions = reject_unknown_sender_domain
#smtpd_tls_CAfile = /etc/ssl/certs/ISRG_Root_X1.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/*/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/*/privkey.pem
smtpd_use_tls = yes

先生方にアドバイスを頂いてもなお、解決できない場合にはドコモへの問い合わせも検討いたします。

お礼日時:2023/03/05 15:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています