Postfix
ポート25によるtelnetコマンドでのメール送信 [#i809519f]
[root@www13154uf
]# telnet localhost 25 <-- localhostに25番で接続。
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.hogehoge.jp ESMTP unknown
helo localhost <-- ご挨拶
250 mail.hogehoge.jp
mail from:hogehogehoge@inamuu.com <-- メール送信元
250 2.1.0 Ok
rcpt to:hogehoge@hogehogehoge.com <-- メール送信先
250 2.1.5 Ok
data <-- メールの本文を書くよと宣言
354 End data with <CR><LF>.<CR><LF>
test mail dayo <-- 本文を書いてみる
. <-- ピリオドは本文終了の意味
250 2.0.0 Ok: queued as 7AAAE60687
quit <-- メール送信の終了
221 2.0.0 Bye
Connection closed by foreign host.
ポート587で送信認証を通してメール送信 [#j072af18]
パターン1 [#g134408e]
telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.hogehoge.com ESMTP unknown
ehlo localhost
250-mail.hogehoge.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth plain base64エンコードしたパスワード <--- ここで認証
235 2.7.0 Authentication successful
mail from:hoge@hogehoge.com <--- 送信元
250 2.1.0 Ok
rcpt to:test@hoge2.com <--- 送信先
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test 587
.
250 2.0.0 Ok: queued as CA90442C1E
パターン2 [#yfee840c]
$ telnet smtp.hogehoge.com 587 <--- 587への接続
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 smtp.hogehoge.com ESMTP qpsmtpd 0.80 ready; send us your mail, but not your spam.
ehlo smtp.hogehoge.com <--- こんにちは
250-smtp.hogehoge.com Hi Unknown [172.19.0.1]
250-PIPELINING
250-8BITMIME
250-SIZE 10240000
250 AUTH PLAIN LOGIN CRAM-MD5
auth plain base64エンコードしたパスワード <--- 認証情報を入力
235 Authentication successful for test@hogehoge.com - authsql/plain
mail from: <test@hogehoge.com>
250 <test@hogehoge.com>, sender OK - how exciting to get mail from you!
rcpt to: <info@piyopiyo.com>
250 <info@piyopiyo.com>, recipient ok
data
354 go ahead
Suebject: TEST MAIL 587 <--- 件名
<--- 空行
TEST MAIL 587 <--- 本文
. <--- 終わりを表すピリオド
250 Queued! (Queue-Id: AF3EC34C5)
quit <--- 接続おわり
221 smtp.hogehoge.com closing connection. Have a wonderful day.
Connection closed by foreign host.
base64エンコードするためのコマンド [#wa0aa6b6]
printf "%s\0%s\0%s" ユーザー名 ユーザー名 パスワード | openssl base64 -e | tr -d '\n'; echo
base64デコード [#bac13e46]
echo "文字列" | openssl enc -d -base64
ポート465でAUTH LOGINでSMTP認証をして送信する [#ld763683]
最初にユーザー名とパスワードをbase64でエンコードする [#q70249cd]
printf ユーザー名 | base64
printf パスワード | base64
openssl s_clientで送信する [#b588fd68]
openssl s_client -connect メールサーバー:465
helo メールサーバー
250 メールサーバー
AUTH LOGIN
334 VXNlcm5hbWU6
エンコードしたユーザー名
334 UGFzc3dvcmQ6
エンコードしたパスワード
235 ok authed
mail from: 送信元
250 ok
rcpt to: 宛先
250 ok
data
354 Enter mail
test mail
.
250 ok 1476933774 qp 23764
CRAM-MD5認証 [#rf77117f]
$ telnet localhost 10025
ehlo localhost
cram-md5 認証を選択する
auth cram-md5
334 PDMzMzMwNTc5NjkuMTI2NTU5NzZAc210cfAwMC5sb2NgbGRfbWFpbj2= <-- 毎回変わる
334の後の文字列をbase64でデコードする
$ cat base64.txt
PDMzMzMwNTc5NjkuMTI2NTU5NzZAc210cfAwMC5sb2NgbGRfbWFpbj2=
$ base64 -D base64.txt
<2939882246.12656088@smtp.localdomain>
上記文字列を下記ファイルへ貼り付けして、phpを実行する
<?php
print hash_hmac( "md5", "<2939882246.12656088@smtp.localdomain>", "ここにパスワード入れる" )
?>
$ php md5.php
2d3f47f72cf04509098cc91fdfebce22
ユーザー名と上記値をbase64で符号化する
$ printf "ユーザー名 2d3f47f72cf04509098cc91fdfebce22" | base64
aW5mb0Bnb29wZXRlc3QuY29tIDJkM2Y0N2Y3MmNmMDQ1MDkwOThjYzkxZmRmZWJjZTIy
表示された値をサーバーに送る
auth cram-md5
334 PDI5Mzk4ODIyNDYuMTI2NTYwODhAc210cDAwMC5sb2NhbGRvbWFpbj4=
aW5mb0Bnb29wZXRlc3QuY29tIDJkM2Y0N2Y3MmNmMDQ1MDkwOThjYzkxZmRmZWJjZTIy
235 2.7.0 Authentication successful
OK