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

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

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

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

1回答

5215閲覧

telnetコマンドによるメール送信のタイムアウト解決について

kitokun

総合スコア3

SMTP

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

1クリップ

投稿2020/07/29 08:33

編集2020/07/29 12:25

前提・実現したいこと

telnet コマンドを用いてメールを送信するということを実現したいです。
現状は「telnet gmail-smtp-in.l.google.com 25」と打ってコネクションを確立しようとしてもタイムアウトが発生する状況です。
環境はRaspberryPi3b+でOSはDebianです。また、Windows10からSSH接続をして操作をしています。

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

これが、コマンドとその結果です。タイムアウトが発生しているのでこの問題を解消したいです。

pi@raspberrypi:~ $ telnet gmail-smtp-in.l.google.com 25 Trying 2404:6800:4008:c03::1b... Trying 74.125.203.27... telnet: Unable to connect to remote host: Connection timed out

tcpdumpコマンドでトラフィックを監視してみたのでその結果も載せておきます。

pi@raspberrypi:~ $ sudo tcpdump -nn port 25 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes 17:10:11.305342 IP6 240b:11:8160:d700:9ce4:c1dd:4355:2441.36364 > 2404:6800:4008:c03::1b.25: Flags [S], seq 2942998474, win 64800, options [mss 1440,sackOK,TS val 3369629406 ecr 0,nop,wscale 7], length 0 17:10:12.340829 IP6 240b:11:8160:d700:9ce4:c1dd:4355:2441.36364 > 2404:6800:4008:c03::1b.25: Flags [S], seq 2942998474, win 64800, options [mss 1440,sackOK,TS val 3369630441 ecr 0,nop,wscale 7], length 0 17:10:14.420851 IP6 240b:11:8160:d700:9ce4:c1dd:4355:2441.36364 > 2404:6800:4008:c03::1b.25: Flags [S], seq 2942998474, win 64800, options [mss 1440,sackOK,TS val 3369632521 ecr 0,nop,wscale 7], length 0 17:10:18.500899 IP6 240b:11:8160:d700:9ce4:c1dd:4355:2441.36364 > 2404:6800:4008:c03::1b.25: Flags [S], seq 2942998474, win 64800, options [mss 1440,sackOK,TS val 3369636601 ecr 0,nop,wscale 7], length 0 17:10:26.980880 IP6 240b:11:8160:d700:9ce4:c1dd:4355:2441.36364 > 2404:6800:4008:c03::1b.25: Flags [S], seq 2942998474, win 64800, options [mss 1440,sackOK,TS val 3369645081 ecr 0,nop,wscale 7], length 0 17:10:43.621285 IP 192.168.1.12.36938 > 74.125.203.27.25: Flags [S], seq 1024880545, win 64240, options [mss 1460,sackOK,TS val 3823782806 ecr 0,nop,wscale 7], length 0 17:10:44.660872 IP 192.168.1.12.36938 > 74.125.203.27.25: Flags [S], seq 1024880545, win 64240, options [mss 1460,sackOK,TS val 3823783845 ecr 0,nop,wscale 7], length 0 17:10:46.740888 IP 192.168.1.12.36938 > 74.125.203.27.25: Flags [S], seq 1024880545, win 64240, options [mss 1460,sackOK,TS val 3823785926 ecr 0,nop,wscale 7], length 0 17:10:50.820862 IP 192.168.1.12.36938 > 74.125.203.27.25: Flags [S], seq 1024880545, win 64240, options [mss 1460,sackOK,TS val 3823790006 ecr 0,nop,wscale 7], length 0 17:10:58.980889 IP 192.168.1.12.36938 > 74.125.203.27.25: Flags [S], seq 1024880545, win 64240, options [mss 1460,sackOK,TS val 3823798166 ecr 0,nop,wscale 7], length 0

この結果から、SMTPサーバがこちらに返答していない、もしくはSMTPサーバは返答しているがRaspberryPi3+がそれを受け取っていないのどちらかであると考えました。

試したこと

ファイアウォールがSMTPサーバからの通信を遮断しているのかと思い、ufwコマンドで25番ポートを開けてみましたが、結果は変わりませんでした。

ファイアウォールのほかにどのような原因が考えられますでしょうか。ご教授いただけるとありがたいです。

###追記1
契約プロバイダのサイトを確認したところ25番ポートの利用が制限されているとの記述が見つかりました。これを受けて、サブミットポートである587番ポートを使ってみましたが、結果は変わりませんでした。

pi@raspberrypi:~ $ sudo telnet gmail-smtp-in.l.google.com 587 Trying 2404:6800:4008:c03::1a... Trying 74.125.203.26... telnet: Unable to connect to remote host: Connection timed out

####追記2
587番ポートを使ってMX?サーバには繋げられないようなのでsmtp.gmail.comにつなげたところコネクションの確立ができました。

pi@raspberrypi:~ $ telnet smtp.gmail.com 587 Trying 2404:6800:4008:c07::6d... Connected to smtp.gmail.com. Escape character is '^]'. 220 smtp.gmail.com ESMTP j13sm2324081pfa.149 - gsmtp HELO localhost 250 smtp.gmail.com at your service STARTTLS 220 2.0.0 Ready to start TLS MAIL FROM:<example@example.com>  FConnection closed by foreign host.

しかし、示したように送信元のメールアドレスを入力して改行すると。すぐにコネクションが閉じてしまいました。

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

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

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

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

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

kitokun

2020/07/29 09:49

回答ありがとうございます。 OP25Bというものを知らなかったので調べたのですが、今回の場合で言うとGoogleのサーバが外部からの接続を拒んでいるということですか? そういうことであるならば、成功例があるので違うのではないかと思います。 http://www.dcom-web.co.jp/lab/etc/send_mail_using_telnet
yut148

2020/07/29 10:05

続きが気になるので便乗してしまい恐縮です。 TXTレコードを追加されたのでしょうか。 >SPFレコードでスパムメールでないことを証明 >メール送信元アドレスのドメインにSPFレコードを登録してスパムメールではないことを証明します。 >(※もちろん自分のドメインが必要になります) >今回は以下のTXTレコードを登録しました。
kitokun

2020/07/29 10:29

追加はしていません。 ただ、私の挙げた例の場合ではサーバとのコネクションが確立していたが、Gmailの機能によってはじかれたとのことですので、今回のtelnetでそもそもコネクションが確立しないことに対する解決策としては違うように感じます。
scsi

2020/07/29 11:07

OP25B でしょ。 あなたのプロバイダが外部への 25port への接続を制限しています。 Google は制限してません。
guest

回答1

0

下記は gmail.com の MX なので 25 でないと接続できません。よって、あなたのプロバイダからは接続できません。

pi@raspberrypi:~ $ sudo telnet gmail-smtp-in.l.google.com 587 Trying 2404:6800:4008:c03::1a... Trying 74.125.203.26... telnet: Unable to connect to remote host: Connection timed out

587 に接続して認証してメールを送信したいのであれば smtp.gmail.com に接続するべきです

$ telnet smtp.gmail.com 587 Trying 108.177.125.108... Connected to smtp.gmail.com. Escape character is '^]'. 220 smtp.gmail.com ESMTP y6sm2255868pfr.61 - gsmtp

投稿2020/07/29 12:08

scsi

総合スコア2840

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

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

kitokun

2020/07/29 12:21

ありがとうございます。 telnet smtp.gmail.com 587 でコネクションの確立はできました。 しかし、STARTTLSコマンドを打った後に送信元のドメインを入力するとコネクションが閉じられてしまいます。 これを解決するにはどうするべきだと思いますか。
scsi

2020/07/29 14:39

まず、startls なので telnet では、それ以降の処理は無理です。 また、できたとしても MAIL FROM の前に 認証をする必要があります。 もし 認証して送るのであれば openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587 EHLO localhost AUTH なんちゃら って感じになりますね。
scsi

2020/07/29 14:43

正直、知識がないのであればその方法でのメール送信は諦めた方がいいです。 またはクラウドサービスなど OP25B が適用されない外部のサーバから 試してみるとかですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問