SMTP のコマンド操作

このページは、SMTP のコマンド操作をまとめる予定のページです。

目次

注意

  • 主に telnet で操作する説明になっています。
  • Windows で telnet コマンドを使用する場合は「Windows の機能の有効化と無効化」から「Telnet Client」にチェックを入れてください。※1
    (Windows 10 の場合は「コントロールパネル」>「プログラム」からか、Windows キーを押して「telnet」と入力すると「Windows の機能の有効化と無効化」の項目が表示されます)
  • 入力例は クライアント (入力)サーバー (応答) の色分けになっています
※1 telnet コマンドを使えるようにする

基本的なコマンド

コマンド 概要
EHLO 自分のIPアドレス 最初にサーバーに接続するときに使用するコマンド (挨拶)
HELO 自分のIPアドレス EHLO と同じ (EHLO を受け付けない古いサーバー用)
AUTH XXX 認証のコマンド。「XXX」の部分はサーバーが対応している種類のものを使用する
(EHLO の応答などで確認できる)
MAIL From:送信元メールアドレス 送信元メールアドレスを指定するコマンド
RCPT To:送信先メールアドレス 送信先メールアドレスを指定するコマンド
DATA メールヘッダーとメール本文を入力するためのコマンド
QUIT 接続を終了する

DATA の例

From: 送信元メールアドレス
To: 送信先メールアドレス

本文
.
  • ヘッダーと本文は1行空けます。
  • 終了時は . で終了します。

一連の操作の実行例

telnet 接続先ホスト名 587
220 接続先ホスト名 ESMTP Sendmail X.XX.X/X.XX.X; Wed, 1 Jan 2020 00:00:00 +0900 (JST)
EHLO 自分のIPアドレス
250-接続先ホスト名 Hello 自分のホスト名 [自分のIPアドレス], pleased to meet you
250-...
AUTH PLAIN 認証文字列
235 2.0.0 OK Authenticated
MAIL From:送信元メールアドレス
250 2.1.0 送信元メールアドレス... Sender ok
RCPT To:送信先メールアドレス
250 2.1.5 送信先メールアドレス... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
From: 送信元メールアドレス
Subject: 件名

本文
.
250 2.0.0 XXXXXXXXXXXXXX Message accepted for delivery
QUIT
221 2.0.0 接続先ホスト名 closing connection

AUTH PLAIN

AUTH PLAIN 認証文字列 の形式で認証を行うコマンドです。
認証文字列は ユーザー名\0ユーザー名\0パスワード\0ユーザー名\0パスワード を Base64 化した文字列を使用します。(\0 はヌル文字)

実行例
AUTH PLAIN 認証文字列
235 2.0.0 OK Authenticated

認証文字列を生成する例

認証文字列を生成する例 (Linux)
printf "\0%s\0%s" ユーザー名 パスワード | base64
認証文字列を生成する例 (Windows コマンドプロンプト)
powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes((\"{0}{1}{0}{2}\" -f [char]0, \"ユーザー名\", \"パスワード\")))"
認証文字列を生成する例 (Windows PowerShell)
[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(("{0}{1}{0}{2}" -f [char]0, "ユーザー名", "パスワード")))

AUTH LOGIN

AUTH LOGIN のあと、ユーザー名とパスワードを入力して認証を行うコマンドです。
ユーザー名とパスワードは Base64 化した文字列を使用します。

実行例
AUTH LOGIN
334 VXNlcm5hbWU6
ユーザー名
334 UGFzc3dvcmQ6
パスワード
235 2.0.0 OK Authenticated

Base64 文字列を生成する例

Base64 文字列を生成する例 (Linux)
echo -n ユーザー名またはパスワード | base64
Base64 文字列を生成する例 (Windows コマンドプロンプト)
powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes((\"ユーザー名またはパスワード\")))"
Base64 文字列を生成する例 (Windows PowerShell)
[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(("ユーザー名またはパスワード")))

参考