ポート25によるtelnetコマンドでのメール送信†[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で送信認証を通してメール送信†パターン1†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†$ 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エンコードするためのコマンド†printf "%s\0%s\0%s" ユーザー名 ユーザー名 パスワード | openssl base64 -e | tr -d '\n'; echo base64デコード†echo "文字列" | openssl enc -d -base64 ポート465でAUTH LOGINでSMTP認証をして送信する†最初にユーザー名とパスワードをbase64でエンコードする†printf ユーザー名 | base64 printf パスワード | base64 openssl s_clientで送信する†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認証†$ 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 |