SMTP 送信を有効にする
SMTP インターフェイスを使用してメールを送信するには、まず SMTP 送信機能を有効にする必要があります。
Direct Mail コンソールにログインします。
左側のナビゲーションウィンドウで、[送信元アドレス] をクリックします。
送信元アドレスのリストから、SMTP 送信を有効にしたい送信元アドレスを探し、操作列で[SMTP パスワードの設定]をクリックします。
表示されたダイアログボックスで、SMTP パスワードを入力し、[OK] をクリックします。
SMTP 送信メソッド
簡易メール転送プロトコル (SMTP) は、メールの送信に使用されるプロトコルです。コマンドと応答を使用して、クライアントとサーバー間でメッセージを転送します。クライアントがコマンドを送信し、サーバーが応答を返します。この呼び出しと応答のプロセスは、送信者によって制御されます。
SMTP プロトコル仕様の詳細については、「RFC5321」をご参照ください。
SMTP プロトコルを使用するメールサーバーには 2 つのタイプがあります:
smtpd とも呼ばれるメール送信サーバー。送信者の認証が必要です。
mx とも呼ばれるメール受信サーバー。外部ドメインからローカルユーザーに配信されたメールを受け入れます。
Alibaba Cloud Direct Mail サーバーは smtpd サーバーであり、ユーザー認証が必要です。認証ユーザー名は送信元アドレスと一致する必要があります。ユーザー名とパスワードはコンソールで設定できます。
プログラムから SMTP を使用してメールを送信するには、プログラミング言語用の SMTP ライブラリを使用します。詳細については、「SMTP 呼び出しの例」をご参照ください。
SMTP プロトコルを使用してメールを送信するプロセスは次のとおりです:
クライアントは `telnet` コマンドを使用して SMTP サーバーに接続し、セッションを確立します。
クライアントは `HELO` または `EHLO` コマンドを送信します。
クライアントは `AUTH` コマンドを送信してユーザーを認証します (smtpd メソッドを使用)。
クライアントは `MAIL` コマンドを送信して送信者を指定します。
クライアントは `RCPT` コマンドを送信して受信者を指定します。
クライアントは `DATA` コマンドを送信してメール本文の送信を開始します。
クライアントは `.` (ピリオド) を送信してメール本文の終わりを示します。
クライアントは `QUIT` コマンドを送信してセッションを終了します。
例
次の例は、SMTP コマンドを使用してメールを送信する方法を示す `telnet` セッションを示しています。
注: S はサーバーを表し、C はクライアントを表します。Linux コマンド `echo -n Content|base64` を使用して Base64 エンコーディングを実行できます。
非暗号化メソッド:
$telnet smtpdm.aliyun.com 80
S:220 smtp.aliyun-inc.com MX AliMail Server(127.0.0.1)
C:EHLO test.com
S:250-smtp.aliyun-inc.com
S:250-8BITMIME
S:250-AUTH=PLAIN LOGIN XALIOAUTH
S:250-AUTH PLAIN LOGIN XALIOAUTH
S:250-PIPELINING
S:250 DSN
C:AUTH LOGIN
S:334 dXNlcm5hbWU6
C:YSoqKkBleGFtcGxlLm5ldA== 注: ユーザー名 a***@example.net の Base64 エンコーディング。
S:334 UGFzc3dvcmQ6
C:dGVzdA== 注: ユーザーパスワード test の Base64 エンコーディング。
S:235 Authentication successful
C:MAIL FROM: <a***@example.net> 注: 送信元アドレスを山括弧 (<>) で囲みます。
S:250 Mail Ok
C:RCPT TO: <a***@example.net>
S:250 Rcpt Ok
C:DATA
S:354 End data with <CR><LF>.<CR><LF>
C:subject: test
C:from: <a***@example.net>
C:to: <a***@example.net>
C:
C:test
C:.
S:Data Ok: queued as freedom ###envid=148316944
C:QUIT
S:221 Bye暗号化メソッド (OpenSSL ツールが必要):
openssl s_client -connect smtpdm.aliyun.com:465 -crlf
or
openssl s_client -cipher AES128-GCM-SHA256 -connect smtpdm.aliyun.com:465 -tls1_3 -crlfOpenSSL が正常に接続された後、同じウィンドウで次のクライアントコマンドを 1 行ずつ入力します:
$openssl s_client -connect smtpdm.aliyun.com:465 -crlf
***
***
***
S:220 DirectMail Smtpd Server(127.0.0.1)
C:EHLO test.com
S:250-smtp.aliyun-inc.com
S:250-8BITMIME
S:250-AUTH=PLAIN LOGIN XALIOAUTH
S:250-AUTH PLAIN LOGIN XALIOAUTH
S:250-PIPELINING
S:250 DSN
C:AUTH LOGIN
S:334 dXNlcm5hbWU6
C:YSoqKkBleGFtcGxlLm5ldA== 注: ユーザー名 a***@example.net の Base64 エンコーディング。
S:334 UGFzc3dvcmQ6
C:dGVzdA== 注: ユーザーパスワード test の Base64 エンコーディング。
S:235 Authentication successful
C:MAIL FROM: <a***@example.net> 注: 送信元アドレスを山括弧 (<>) で囲みます。
S:250 Mail Ok
C:rcpt to: <a***1@example.net> 注: rcpt to には小文字を使用してください。大文字は認識されない場合があります。
S:250 Rcpt Ok
C:DATA
S:354 End data with <CR><LF>.<CR><LF>
C:subject: test
C:from: <a***@example.net>
C:to: <a***1@example.net>
C:
C:test
C:.
S:250 Data Ok: queued as freedom ###envid=600000105713504612
C:QUIT
S:DONEこの例では、`DATA` コマンドの後に入力されたメール本文は単純なテキスト文字列です。標準のリッチテキストメールの場合、Multipurpose Internet Mail Extensions (MIME) 仕様に従ってフォーマットする必要があります。これには、件名と本文のエンコーディングが含まれます。適切なフォーマットにより、受信者のサーバーがメールを迷惑メールとして識別するリスクが軽減されます。
MIME プロトコルの詳細については、「RFC2045」をご参照ください。Alibaba Cloud の公式サイトで提供されている SMTP 送信の例にある言語固有のライブラリを使用して、MIME メールをエンコードできます。
MIME メールを作成する方法の詳細については、「SMTP を使用して添付ファイル付きのメールを送信する方法」をご参照ください。