接続コマンド:
【Mail】「TLS」「STARTTLS」接続コマンド
📤 SMTP(送信)
◆ 事前準備(AUTH用 Base64 文字列作成)
■Linux で Base64 に変換する
メールアカウント
echo -en "from@example.com" | base64
パスワード
echo -en "password" | base64
■Windows(PowerShell)で Base64 に変換する
メールアカウント
$bytes = [System.Text.Encoding]::ASCII.GetBytes("from@example.com") ; [Convert]::ToBase64String($bytes)
パスワード
$bytes = [System.Text.Encoding]::ASCII.GetBytes("password") ; [Convert]::ToBase64String($bytes)
◆ SMTP セッション
自分を名乗り、サーバがサポートする機能(AUTH / STARTTLS など)を取得する
EHLO example.com
例:
EHLO smtp.ethereal.email # クライアントが自分のホスト名を名乗り、拡張機能を要求
250-smtp.ethereal.email Nice to meet you, KD106136147050.ppp-bb.dion.ne.jp # サーバのホスト名と挨拶メッセージ
250-PIPELINING # 複数SMTPコマンドを連続送信できる拡張
250-8BITMIME # 8bit文字をメール本文で使用可能
250-SMTPUTF8 # UTF-8文字(日本語アドレス等)をサポート
250 AUTH LOGIN PLAIN # SMTP AUTHに LOGIN と PLAIN の2方式が使える
SMTP 認証を開始する(この後に Base64 化したユーザー名・パスワードを送信)
AUTH LOGIN
334 VXNlcm5hbWU6 #「Username:」をbase64で表示している
${base64のメールアカウント}
334 UGFzc3dvcmQ6 #「Password:」をbase64で表示している
${base64のパスワード}
235 Authentication successful
差出人アドレスを指定する(エンベロープ From / SMTP From)
MAIL FROM:<from@example.com>
宛先アドレスを指定する(複数回指定可能)
RCPT TO:<to@example.com>
メール本文の入力を開始する
DATA
メールヘッダと本文を送信し、. 単独行で本文終了
DATA 以降のメールヘッダは見かけ上の表示(メールクライアントに表示される)。
空行はヘッダと本文の区切り。
Subject: test
From: from@example.com # ヘッダfrom
To: to@example.com
Hello
.
SMTP セッションを終了する
QUIT
◆ SMTPセッション時の推奨の入力内容
送信に使うSMTPサーバが定めた「送信者ポリシー」がある。
入力内容がそれに違反する場合は、送信できない。
下記の入力内容であれば、ポリシー違反に該当する可能性が低い。
| 項目 | 役割 | SMTP AUTHアカウントと一致させる? | 他項目との関係 / 理由 |
|---|---|---|---|
| SMTP AUTH | 送信者の身分証 | ― | SMTPサーバにログインする主体 |
| MAIL FROM | エンベロープFrom(配送責任者・バウンス先) | ほぼ必須 | AUTHユーザーと不一致だと送信者制限で拒否されやすい |
| From(ヘッダ) | 表示上の差出人 | 強く推奨 | DMARCでは From と SPF/DKIM の整合性を見る |
| RCPT TO | 実際の配送先(1通につき複数可) | 不要 | To / Cc / Bcc に含まれる全宛先が必要 |
| To(ヘッダ) | 表示用宛先(主) | 不要 | RCPT TO に存在しないと 表示されるが届かない |
| Cc(ヘッダ) | 表示用宛先(写し) | 不要 | RCPT TO に存在しないと 表示されるが届かない |
| Bcc(概念) | 非表示の配送先 | 不要 | RCPT TO のみ存在し、ヘッダには書かない |
📥 POP3(受信・取得)
ユーザー名を送信する
USER username
パスワードを送信し、認証を行う
PASS password
メール件数と総サイズを確認する
STAT
メール一覧を表示する(番号とサイズ)
LIST
指定した番号のメール全文を取得する
RETR 1
指定した番号のメールを削除予約する(即削除ではない)
DELE 1
セッションを終了し、削除を確定する
QUIT
📂 IMAP(受信・管理)
※ すべてのコマンドにタグ(例:a)を付ける必要がある
ユーザー名とパスワードでログインする
a LOGIN username password
利用可能なフォルダ一覧を取得する
a LIST "" "*"
操作対象として INBOX を選択する
a SELECT INBOX
指定した番号のメール本文を取得する
a FETCH 1 BODY[TEXT]
| 指定 | 意味 |
|---|---|
BODY[] |
メール全体 |
BODY[HEADER] |
ヘッダ全体 |
BODY[TEXT] |
本文テキスト |
BODY[HEADER.FIELDS (...)] |
指定ヘッダのみ。以下、例。a FETCH 1 BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)]a FETCH 1 BODY[HEADER.FIELDS (DKIM-Signature)]
|
BODY[n] |
n番目のMIMEパート |
BODY[n.TEXT] |
n番目の本文 |
BODY[n.MIME] |
n番目のMIMEヘッダ |
BODY[n]<x.y> |
MIMEパート n の「x バイト目から y バイト分だけ」取得 |
MIMEパート
メール全体
├─ パート1: text/plain(本文)
├─ パート2: text/html(HTML本文)
├─ パート3: image/jpeg(画像)
└─ パート4: application/pdf(添付)
メールに削除フラグ(\Deleted)を付与する
a STORE 1 +FLAGS (\Deleted)
削除フラグを外す
a STORE 1 -FLAGS (\Deleted)
削除フラグ付きメールを物理削除する
a EXPUNGE
IMAP セッションを終了する
a LOGOUT