yahooのメールにtelnetからSMTPを使ってメール送信してみます。
$ telnet smtp.mail.yahoo.co.jp 25
Trying 183.79.29.237...
telnet: connect to address 183.79.29.237: Connection refused
telnet: Unable to connect to remote host
はい。Connection refusedされましたね。
これはプロバイダがOutbound Port 25 Blockingをかけているからです。
なので、サブミッションポートの587を指定して繋ぎます。
$ telnet smtp.mail.yahoo.co.jp 587
Trying 183.79.29.237...
Connected to smtp.mail.g.yahoo.co.jp.
Escape character is '^]'.
220 smtp526.mail.kks.yahoo.co.jp ESMTP
EHLO localhost
250-smtp526.mail.kks.yahoo.co.jp
250-AUTH LOGIN PLAIN XYMCOOKIE
250-PIPELINING
250 8BITMIME
MAIL FROM:自分のメールアドレス
530 Sorry, please use SMTP-AUTH instead - for help go to http://www.yahoo-help.jp/app/answers/detail/a_id/79799/p/622
Connection closed by foreign host.
はい。Connection closedされました。
エラーメッセージからもわかるように、SMTP-Auth(SMTP認証)が必要です。
なので、以下のコマンドを使って認証用の文字列を生成します。
printf "%s\0%s\0%s" メールアドレス メールアドレス パスワード | openssl base64 -e | tr -d '\n'; echo
で、出力された認証用文字列をコピーしておきます。
telnet smtp.mail.yahoo.co.jp 587
Trying 183.79.29.237...
Connected to smtp.mail.g.yahoo.co.jp.
Escape character is '^]'.
220 smtp530.mail.kks.yahoo.co.jp ESMTP
EHLO localhost
250-smtp530.mail.kks.yahoo.co.jp
250-AUTH LOGIN PLAIN XYMCOOKIE
250-PIPELINING
250 8BITMIME
AUTH PLAIN 認証用文字列
235 ok, go ahead (#2.0.0)
MAIL FROM:送信元メールアドレス
250 ok
RCPT TO:送信先メールアドレス
250 ok
DATA
354 go ahead
Subject: hoge
From: 送信元メールアドレス
To: 送信先メールアドレス
hello!
.
250 ok 1454173930 qp 24032
quit
221 smtp531.mail.kks.yahoo.co.jp
Connection closed by foreign host.
で、yahooメールを見てみるとメールが届いているのが分かります。