それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ruby mail でSMTP over SSL でメールを送る

SMTP over SSL を使う

SMTP Over SSL は一般的に ポート465 で提供される

if ARGV.size != 3
    puts "usage : \n "
    puts "     $ "+  __FILE__ + "  takuya@exmaple.com  'test mail'  ' hello '  "
    puts " \n\n "
    exit
end


require 'mail'

options = { :address              => "smtp.example.com",
            :port                 => 465,
            :user_name            => 'hoge@example.com',
            :password             => '****',
            :authentication       => 'plain',
            :ssl => true,
              }

Mail.defaults do
  delivery_method :smtp, options
end
mail = Mail.new do
  from     'hoge@example.com'
  to       ARGV.shift 
  subject  ARGV.shift
  body     ARGV.shift
end

mail.deliver!

TLS で STARTTLS を使う

こっちがTLSで通信している部分

options = { :address              => "smtp.example.com",
            :port                 => 995,
            :user_name            => 'hoge@example.com',
            :password             => '****',
            :authentication       => 'plain',
            :enable_starttls_auto => true  
}

over SSL と START TLSの違いは。。。

一言で言えばレイヤーの違いかな。もう少し言えば、ポート利用の違い。

さらにいえば、暗号化通信の開始点がぜんぜん違う START TLS は とりあえず、SMTPで接続しておいてSTART TLSコマンドで暗号化トンネル(TLS)を作る感じ。

SSLは、通信開始段階からすでに暗号化(SSL)の中にいる。通常接続とは併存できないので別途Listenポートを確保する。

参考資料

http://salt.iajapan.org/wpmu/anti_spam/admin/tech/explanation/tls-arc/