2012-11-16 18 views
6

Sto utilizzando la posta Pony per inviare messaggi di posta elettronica (perché non potrei mai far funzionare ActionMailer sulla mia casella Windows locale).hostname non corrisponde al certificato del server - impossibile inviare e-mail

Il codice nel mio file user_mailer.rb includono questa chiamata al metodo Pony.mail:

Pony.mail({ 
    :to => email_address, 
    :from => 'MyChairSales <[email protected]>', 
    :subject => subject, 
    :body => email_body, 
    :html_body => html_body, 
    :via => :smtp, 
    :via_options => { 
    :address    => 'mail.mychairsales.com', 
    :port     => '25', 
    :enable_starttls_auto => true, 
    :user_name   => 'mychairs', 
    :password    => 'thepassword', 
    :domain    => "mychairsales.com" # the HELO domain provided by the client to the server 
    } 
}) 

Questo funzionava (ho ricevuto e-mail con questo metodo), ma è ora venendo a mancare con l'errore "hostname non corrisponde al certificato del server ".

Ecco la parte superiore della traccia dello stack:

["/usr/lib64/ruby/1.9.3/openssl/ssl-internal.rb:121:in `post_connection_check'", 
"/usr/lib64/ruby/1.9.3/net/smtp.rb:585:in `tlsconnect'", "/usr/lib64/ruby/1.9.3 
/net/smtp.rb:560:in `do_start'", "/usr/lib64/ruby/1.9.3/net/smtp.rb:519:in `start'", 
"/home4/mychairs/ruby/gems/gems/mail-2.4.4/lib/mail/network/delivery_methods 
/smtp.rb:144:in `deliver!'", "/home4/mychairs/ruby/gems/gems/mail-2.4.4/lib 
/mail/message.rb:245:in `deliver!'", "/home4/mychairs/ruby/gems/gems/pony-1.4/lib 
/pony.rb:166:in `deliver'", "/home4/mychairs/ruby/gems/gems/pony-1.4/lib 
/pony.rb:138:in `mail'", "/home4/mychairs/rails_apps/chairsales/app/mailers 
/user_mailer.rb:32:in `send_mail'", "/home4/mychairs/rails_apps/chairsales/app/mailers 
/user_mailer.rb:23:in `send_password_reset_email'",... 

Qualsiasi orientamento sarebbe molto apprezzato!

+0

Ho un talento per fare domande a cui nessuno vuole rispondere. :) – vbsql7

risposta

17

Un po 'in ritardo ma ho riscontrato anche questo errore ma con la gemma Ruby Mail. Se il server SMTP supporta TLS, tenterà di utilizzare TLS e autenticare il certificato SSL. Se il certificato viene emesso per un nome host diverso da quello utilizzato o se il certificato non può essere autenticato (ad esempio se è autofirmato e non ti fidi della CA), allora fallirà con l'errore "hostname non corrisponde il certificato del server ".

Per aggirare il problema, utilizzare l'opzione: openssl_verify_mode. Questo può essere impostato su OpenSSL :: SSL :: VERIFY_NONE per non eseguire alcuna verifica del certificato, tuttavia continuerà a crittografare la sessione SMTP. Oppure ci sono altre opzioni disponibili all'interno della libreria OpenSSL.

Usando il tuo esempio, sarebbe:

Pony.mail({ 
    :to => email_address, 
    :from => 'MyChairSales <[email protected]>', 
    :subject => subject, 
    :body => email_body, 
    :html_body => html_body, 
    :via => :smtp, 
    :via_options => { 
    :openssl_verify_mode => OpenSSL::SSL::VERIFY_NONE, 
    :address    => 'mail.mychairsales.com', 
    :port     => '25', 
    :enable_starttls_auto => true, 
    :user_name   => 'mychairs', 
    :password    => 'thepassword', 
    :domain    => "mychairsales.com" # the HELO domain provided by the client to the server 
    } 
}) 

Questo funziona anche per la gemma posta pure.

+1

funziona come un incantesimo, qualsiasi problema di sicurezza? –

+1

SÌ! Ci sono problemi di sicurezza! Ciò consente a chiunque su Internet che si trova tra te e il tuo server di rubare la tua connessione e leggere i tuoi dati. Non dovresti MAI farlo in un'applicazione sicura, dovresti lavorare solo con server che emettono certificati validi. – Brad

+1

Sì, questo è vero. Se hai bisogno di verificare l'identità del server con cui stai comunicando per prevenire gli attacchi man in the middle, non devi disattivare la verifica dell'host. Potrebbero esserci casi in cui ciò non è necessario o possibile se si ha a che fare con una terza parte che rilascia certificati "validi" ma che per qualche motivo non corrispondono al nome host. Ovviamente non le migliori pratiche. –

Problemi correlati