gomail noauth пример вылетает

Я пытаюсь следовать этому примеру:

package main

import (
    "gopkg.in/gomail.v2"
)




func main() {
    m := gomail.NewMessage()
    m.SetHeader("From", "from@example.com")
    m.SetHeader("To", "to@example.com")
    m.SetHeader("Subject", "Hello!")
    m.SetBody("text/plain", "Hello!")

    d := gomail.Dialer{Host: "localhost", Port: 587}
    if err := d.DialAndSend(m); err != nil {
        panic(err)
    }
} //main

И я получил эту ошибку:

panic: 454 4.7.0 TLS not available due to local problem

goroutine 1 [running]:
panic(0x244ca0, 0xc820010b20)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:464 +0x3e6
main.main()
    /Users/kaiyin/IdeaProjects/gomail/main.go:19 +0x342
exit status 2

Я также попытался отключить TLS и SSL:

    d := gomail.Dialer{Host: "localhost", Port: 587, SSL: false, TLSConfig: nil}

Но ошибка все еще сохраняется.


Я заглянул в mail.log (из postfix на osx 10.10):

Apr  7 14:28:05 kaiyins-mbp postfix/smtpd[64525]: warning: No server certs available. TLS won't be enabled
Apr  7 14:28:05 kaiyins-mbp postfix/smtpd[64525]: connect from localhost[::1]
Apr  7 14:28:05 kaiyins-mbp postfix/smtpd[64525]: lost connection after STARTTLS from localhost[::1]

Итак, я создал сертификаты, как это:

cd /etc/postfix
sudo openssl req -new -outform PEM -out smtpd.cert    -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM    -days 365 -x509

И изменили настройки постфикса:

smtpd_enforce_tls                = no
smtpd_tls_loglevel               = 1
smtpd_use_tls                    = yes
smtpd_tls_key_file               = /etc/postfix/smtpd.key
smtpd_tls_cert_file              = /etc/postfix/smtpd.cert

Теперь я получаю другую ошибку:

panic: x509: certificate signed by unknown authority

goroutine 1 [running]:
panic(0x26e3c0, 0xc8203e4b80)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:464 +0x3e6
main.main()
    /Users/kaiyin/IdeaProjects/gomail/main.go:19 +0x32f
exit status 2

Я попытался создать сертификат, как указано здесь: http://www.akadia.com/services/ssh_test_certificate.html

И я получил еще одну ошибку:

panic: x509: certificate is valid for Kaiyin Zhong, not localhost

goroutine 1 [running]:
panic(0x26a7e0, 0xc8203e6800)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:464 +0x3e6
main.main()
    /Users/kaiyin/IdeaProjects/gomail/main.go:19 +0x32f
exit status 2

Я предположил, что неверно назвал имя сервера, поэтому я сделал это снова, с полным доменным именем сервера, установленным на localhost:

Common Name (e.g. server FQDN or YOUR name) []:localhost

Затем я вернулся к предыдущей ошибке:

panic: x509: certificate signed by unknown authority

goroutine 1 [running]:
panic(0x26e3c0, 0xc8203e6800)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:464 +0x3e6
main.main()
    /Users/kaiyin/IdeaProjects/gomail/main.go:19 +0x32f
exit status 2

1 ответ

Установите параметр InsecureSkipVerify:

package main

import (
    "crypto/tls"

    "gopkg.in/gomail.v2"
)

func main() {
    d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
    d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

    // Send emails using d.
}

Источник: https://github.com/go-gomail/gomail

Другие вопросы по тегам