Comment 3:
I don't know what's going on. Please try making these changes to src/pkg/net/smtp/smtp.go: diff -r b984f2b4aa91 src/pkg/net/smtp/smtp.go --- a/src/pkg/net/smtp/smtp.go Thu Feb 16 22:04:13 2012 -0500 +++ b/src/pkg/net/smtp/smtp.go Fri Feb 17 09:26:15 2012 -0500 @@ -11,6 +11,7 @@ package smtp import ( +"fmt" "crypto/tls" "encoding/base64" "io" @@ -66,6 +67,7 @@ // cmd is a convenience function that sends a command and returns the response func (c *Client) cmd(expectCode int, format string, args ...interface{}) (int, string, error) { +fmt.Printf("> %sn", fmt.Sprintf(format, args...)) id, err := c.Text.Cmd(format, args...) if err != nil { return 0, "", err @@ -73,6 +75,10 @@ c.Text.StartResponse(id) defer c.Text.EndResponse(id) code, msg, err := c.Text.ReadResponse(expectCode) +fmt.Printf("< %d %sn", code, msg) +if err != nil { + fmt.Printf("ERR: %vn", err) +} return code, msg, err } When I run this program with those changes: package main import ( "fmt" "net/smtp" ) func main() { auth := smtp.PlainAuth( "", "fake@account", "password", "smtp.gmail.com", ) err := smtp.SendMail("smtp.gmail.com:587", auth, "rsc@rsc.swtch.com", []string{"rsc@rsc.swtch.com"}, []byte("Here is a message."), ) fmt.Println(err) } I get this output: $ go run x.go < 250 mx.google.com at your service, [24.61.14.197] SIZE 35882577 8BITMIME STARTTLS ENHANCEDSTATUSCODES < 220 2.0.0 Ready to start TLS < 250 mx.google.com at your service, [24.61.14.197] SIZE 35882577 8BITMIME AUTH LOGIN PLAIN XOAUTH ENHANCEDSTATUSCODES < 535 5.7.1 Username and Password not accepted. Learn more at 5.7.1 http://support.google.com/mail/bin/answer.py?answer=14257 fj4sm6777173vdb.22 < 530 5.5.1 Authentication Required. Learn more at ERR: 530 5.5.1 Authentication Required. Learn more at 530 5.5.1 Authentication Required. Learn more at $ Maybe the trace you get will be enough to identify why AUTH is not being sent or being rejected. Russ
Как сконфигурировать postfix, чтобы он отправлял почту через stmp-сервер Яндекса
4 июля 2022 г.
• 3 min read
Я тут перевез свой блог в Облако Яндекса и по пути столкнулся с трудностью — не отправляются письма. В логах моего любимого почтовика постфикса ошибка:
Jun 17 00:32:56 vm1 postfix/smtp[1374175]: connect to gmail-smtp-in.l.google.com[142.251.1.26]:25: Connection timed out
Jun 17 00:32:56 vm1 postfix/smtp[1374175]: connect to gmail-smtp-in.l.google.com[2a00:1450:4010:c0d::1a]:25: Network is unreachable
Jun 17 00:33:26 vm1 postfix/smtp[1374175]: connect to alt1.gmail-smtp-in.l.google.com[142.250.157.27]:25: Connection timed out
Jun 17 00:33:26 vm1 postfix/smtp[1374175]: connect to alt1.gmail-smtp-in.l.google.com[2404:6800:4008:c13::1a]:25: Network is unreachable
Jun 17 00:33:56 vm1 postfix/smtp[1374175]: connect to alt2.gmail-smtp-in.l.google.com[173.194.202.26]:25: Connection timed out
Обратился в поддержку. Оказалось, что из облака исходящий трафик на 25 порт заблокирован. Отправлять почту можно только через сервера яндекса от имени какого-то пользователя.
Поскольку мой домен — codepoetry.ru
То пользователь пусть будет root@codepoetry.ru
Домен уже делегирован на яндекс, поэтому я просто добавил нового пользователя и залогинился под ним в почту, чтобы поставить галочку «Я согласен …»
Потом от этого пользователя зашел в настройки профиля и создал отдельный пароль:
Если у вас нет своего домена, то можете просто создать новый ящик вида
myserverroot@yandex.ru
— в остальном настройка ничем не отличается.
Дальше можно перейти к настройке, собственно, postfix.
Postfix relay
Дописываем в основной конфиг /etc/postfix/main.cf
следующие строки:
smtp_sasl_auth_enable = yes
smtp_tls_security_level = encrypt
smtp_tls_wrappermode = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
relayhost = [smtp.yandex.ru]:465
Создаем файл с логином-паролем:
sudo touch /etc/postfix/sasl_passwd
sudo chmod 0640 /etc/postfix/sasl_passwd
И пишем туда:
[smtp.yandex.ru]:465 root@codepoetry.ru:my-password
Тут важно отметить, что строка [smtp.yandex.ru]:465
должна быть одинаковой и там и там.
Потом не забудьте превратить файл в базу данных:
sudo postmap /etc/postfix/sasl_passwd
И сделаем релоад, чтобы постфикс подхватил изменения конфига
sudo systemctl reload postfix
Проверка
Дальше я открыл в одном окне логи
sudo tail -f /var/log/mail.log
А из другого отправлял письма
echo "This is the body of the email" | mail -s "This is the subject line" dima@gmail.com
Письмо не ушло, а в логе появилась ошибка 553 5.7.1 Sender address rejected: not owned by auth user. 1655646734-7knhhkCpkb-qEMS4B3Z (in reply to MAIL FROM command))
В статьях яндекса об этом говорится. По логу выше видно, что в поле FROM
стоит адрес from=dima@vm1.ru-central1.internal
— а должно быть root@codepoetry.ru
, иначе яндекс не примет.
Поэтому я добавил в main.cf
:
smtp_generic_maps = hash:/etc/postfix/generic
И создал файл /etc/postfix/generic
:
@vm1.ru-central1.internal root@codepoetry.ru
Теперь для любых отправленных с сервера писем в момент их выхода будет подменяться адрес отправителя. Не забудем переиндексировать:
sudo postmap /etc/postfix/generic
sudo systemctl reload postfix
Другие возможные ошибки
503 5.5.4 Error: send AUTH command first. 1655644978-vxV6fiLXFy-MwN8PqpG (in reply to MAIL FROM command))
Вы забыли включить smtp_sasl_auth_enable = yes
SMTPS wrappermode (TCP port 465) requires setting "smtp_tls_wrappermode = yes", and "smtp_tls_security_level = encrypt" (or stronger)
status=deferred (delivery temporarily suspended: SASL authentication failed; cannot authenticate to server smtp.yandex.ru[77.88.21.158]: no mechanism available)
status=deferred (SASL authentication failed; server smtp.yandex.ru[77.88.21.158] said: 535 5.7.8 Error: authentication failed: This user does not have access rights to this service 1655646115-7Ko3u9UTap-ftNKo6bN)
Вот эта ошибка интересная и сначала поставила меня в тупик. Чтобы победить, нужно разрешить доступ почтовых программ в настройках почты:
Не очевидно, что imap влияет на возможность функционирования smtp.
71 / 68 / 46 Регистрация: 02.12.2015 Сообщений: 890 Записей в блоге: 1 |
|
1 |
|
08.12.2018, 12:33. Показов 25279. Ответов 13
При попытке регистрация выдает такую ошибку? что делать?
__________________
0 |
71 / 68 / 46 Регистрация: 02.12.2015 Сообщений: 890 Записей в блоге: 1 |
|
10.12.2018, 18:16 [ТС] |
2 |
почему возникла такая ошибка?
0 |
1274 / 979 / 137 Регистрация: 01.10.2009 Сообщений: 3,100 Записей в блоге: 1 |
|
10.12.2018, 18:44 |
3 |
aleksskay4, Яндекс? SSL указан?
0 |
71 / 68 / 46 Регистрация: 02.12.2015 Сообщений: 890 Записей в блоге: 1 |
|
10.12.2018, 19:10 [ТС] |
4 |
XIST, Где?
0 |
1274 / 979 / 137 Регистрация: 01.10.2009 Сообщений: 3,100 Записей в блоге: 1 |
|
10.12.2018, 19:27 |
5 |
aleksskay4, Яндекс? SSL указан?
При попытке регистрация выдает такую ошибку? тогда ответный вопрос, где регистрация?
0 |
aleksskay4 71 / 68 / 46 Регистрация: 02.12.2015 Сообщений: 890 Записей в блоге: 1 |
||||
10.12.2018, 20:18 [ТС] |
6 |
|||
Сейчас переустанавливаю студио. Вроде когда я оставил регистрацию по умолчанию у меня не сработало. Я хочу отправить ссылку на почту.
0 |
.NET C#,ASP.NET MVC 592 / 503 / 225 Регистрация: 16.10.2010 Сообщений: 1,902 |
|
10.12.2018, 21:03 |
7 |
Я хочу отправить ссылку на почту.
Отклик сервера: 5.5.4 Error: send AUTH command first.» Ну тогда вполне логично можно преположить что это ответ от вашего SMTP сервера.
0 |
1274 / 979 / 137 Регистрация: 01.10.2009 Сообщений: 3,100 Записей в блоге: 1 |
|
10.12.2018, 21:04 |
8 |
aleksskay4, а где класс самой отправки? в App_Start?
0 |
aleksskay4 71 / 68 / 46 Регистрация: 02.12.2015 Сообщений: 890 Записей в блоге: 1 |
||||
10.12.2018, 21:31 [ТС] |
9 |
|||
Вот
Добавлено через 3 минуты
0 |
1274 / 979 / 137 Регистрация: 01.10.2009 Сообщений: 3,100 Записей в блоге: 1 |
|
10.12.2018, 21:41 |
10 |
aleksskay4, парольлогин точно верный?
0 |
71 / 68 / 46 Регистрация: 02.12.2015 Сообщений: 890 Записей в блоге: 1 |
|
10.12.2018, 21:43 [ТС] |
11 |
Да. Я один пароль используя для разных почт. У меня регистрация проходит. Я могу авторизоваться, но письмо на почту не приходит
0 |
71 / 68 / 46 Регистрация: 02.12.2015 Сообщений: 890 Записей в блоге: 1 |
|
11.12.2018, 14:16 [ТС] |
12 |
Добавлено через 56 секунд
// настройка логина, пароля отправителя XIST, Вы об этом пароле говорили? Добавлено через 9 минут Добавлено через 1 минуту
0 |
.NET C#,ASP.NET MVC 592 / 503 / 225 Регистрация: 16.10.2010 Сообщений: 1,902 |
|
11.12.2018, 14:24 |
13 |
Еще инфа для размышления. Оф инфа с сайта яндекса Исходящая почта
0 |
1274 / 979 / 137 Регистрация: 01.10.2009 Сообщений: 3,100 Записей в блоге: 1 |
|
11.12.2018, 17:00 |
14 |
lvlkoo, нене, работает на 25, лично два проекта с отправкой сейчас крутится, всё работает, да же вечером проверю
0 |
Переезд с локального домена на корпоративный на yandex.ru
Было: почта со сножества серверов спокойно сыпалась на корпоративный mdaemon и небыло никаких проблем — но в одно прекрасное утро нашего провайдера забанил spamhouse — полностью всё подсеть.
Почта с серверов шла не только нам — был и транзит до серверов клиентов и он отпал полностью.
Mdaemon не смог осилить пересылку почты на yandex нету там настроек gateway нужных авторизации по ssl.
Почитать можно вот тут
http://dev.1c-bitrix.ru/community/forums/forum32/topic66827/
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=37&LESSON_ID=5506&LESSON_PATH=3908.6488.5501.5506
—————————————————————————————————-
Как было настроено на клиентах:
в postfix main.cf был настроен только один параметр relayhost = [10.58.0.1]
в /etc/ssmtp в файле
/etc/ssmtp/revaliases была вбита строка
root:voicemail@supersperm.ru:10.58.0.1:25
в /etc/ssmtp/ssmtp.conf
—————————————————————————————————-
postfix и ssmtp на сервере 10.58.0.1 были настроены точно также — только указаны адреса Mdaemon
—————————————————————————————————-
Заводим корпоративный домен на yandex — пускай будет supersperm.ru
перенастраиваем postfix на головном сервере чтоб все сообщения слать на yandex от пользователя mdaemon@supersperm.ru
на нужные адреса
(не забывайте создать пользователей в корпоративном домене voicemail@supersperm.ru и mdaemon@supersperm.ru )
—————————————————————————————————-
Ставим
yum install stunnel
yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5
—————————————————————————————————-
Настройки stunnel
cat /etc/stunnel/stunnel.conf
sslVersion = SSLv3
chroot = /var/run/stunnel/
setuid = nobody
setgid = nobody
pid = /stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;debug = 7
output = stunnel.log
client = yes
[ssmtp]
accept = 127.0.0.1:25025
connect = smtp.yandex.ru:465
;
Все остальные параметры закоментировать чтоб не мешали
не забываем создать каталоги для программы
/var/run/stunnel/
дать 755 права и пользователя nobody
после этого просто запускает — должен висеть в памяти, если не висит включайте ;debug и смотрите в логи
—————————————————————————————————-
cat /etc/postfix/main.cf
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all ; уходим с localhost
inet_protocols = ipv4 ; переходит только на ipv4 адресация, без ipv6
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 192.168.0.0/16, 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12 ; тут наши подсети которым разрешен транзит
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
relayhost = [127.0.0.1]:25025 ; подключение к stunnel
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sender_canonical_maps = hash:/etc/postfix/canonical
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sender_dependent_authentication = yes
smtp_tls_CAfile = /etc/postfix/ca_yandex.pem
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
unknown_local_recipient_reject_code = 550
—————————————————————————————————-
создаем файлы и прописываем наши параметры
с содержанием сервера yandex и нашего пользователя из под кого мы будем слать почту на всех
cat sasl_passwd
smtp.yandex.ru mdaemon@supersperm.ru:PassWord
—————————————————————————————————-
Тут пользователь с которого мы будем отправлять
cat sender_relay
mdaemon@supersperm.ru smtp.yandex.ru
—————————————————————————————————-
Тут прописываем алиес для root
cat generic
root@localhost voicemail@supersperm.ru
—————————————————————————————————-
Тут алиес для домена (не уверен что обция нужна — но по мануалу прописана)
cat canonical
@supersperm.ru mdaemon@supersperm.ru
—————————————————————————————————-
Прописываем сертификат yandex (поиск по гуглу даст возможность скачать с самого yandex)
типа такой вариант — openssl s_client -starttls smtp -crlf -connect smtp.yandex.ru:25
cat ca_yandex.pem
——BEGIN CERTIFICATE——
MIIGeTCCBWGgAwIBAgIQE0EU3D2I+BSAZoLMDvIr1DANBgkqhkiG9w0BAQUFADB3
MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5B
LjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYD
VQQDExJDZXJ0dW0gTGV2ZWwgSVYgQ0EwHhcNMTMxMjEwMTAyMjM4WhcNMTYxMjA5
MTAyMjM4WjCBmjELMAkGA1UEBhMCUlUxEzARBgNVBAoMCllhbmRleCBMTEMxDDAK
BgNVBAsMA0lUTzEPMA0GA1UEBwwGTW9zY293MRswGQYDVQQIDBJSdXNzaWFuIEZl
ZGVyYXRpb24xFzAVBgNVBAMMDnNtdHAueWFuZGV4LnJ1MSEwHwYJKoZIhvcNAQkB
FhJwa2lAeWFuZGV4LXRlYW0ucnUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDs0+Go9ihLOt96aLf4hscMACZccUaovpmGVTndrkHYUAHGkF8fVh55bezF
tr+gWX0+WJ5NXSkDOr6y4ocRYLDs04uUZ1hQPPcclHGzUzW/tMmfcAGXRkaFTIkP
wOD69kAh9UrzAJWGqA7o8+kVLtueCzE5JmsEJRyXkanS7iPv6wDgLnPTZobVNb2t
I0H2KeSGgtXRsgqmVbZQ7VSLkU+iXX6v7FwwLyL+ZUuKZORGOjq2okOwqVzuC0Cg
OoJLGiFMSg54kXDz6BMGHXmMGLpcMxbBgX/jrIgYc0rQIkrwLQltosPU+xicbeFT
YvnYdh8ZtFbDC+w/5+1xXb6sBv+HAgMBAAGjggLbMIIC1zAMBgNVHRMBAf8EAjAA
MCwGA1UdHwQlMCMwIaAfoB2GG2h0dHA6Ly9jcmwuY2VydHVtLnBsL2w0LmNybDAf
BgNVHSMEGDAWgBTNSkbKA2WQ5jEQGoLGpRxe0VDPHzAdBgNVHQ4EFgQUk7Y1gZeQ
XPP4gwvGHoW8tzHUlFUwDgYDVR0PAQH/BAQDAgWgMFoGCCsGAQUFBwEBBE4wTDAh
BggrBgEFBQcwAYYVaHR0cDovL29jc3AuY2VydHVtLnBsMCcGCCsGAQUFBzAChhto
dHRwOi8vd3d3LmNlcnR1bS5wbC9sNC5jZXIwggE9BgNVHSAEggE0MIIBMDCCASwG
CiqEaAGG9ncCAgQwggEcMCUGCCsGAQUFBwIBFhlodHRwczovL3d3dy5jZXJ0dW0u
cGwvQ1BTMIHyBggrBgEFBQcCAjCB5TAgFhlVbml6ZXRvIFRlY2hub2xvZ2llcyBT
LkEuMAMCAQIagcBVc2FnZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN0cmljdGx5
IHN1YmplY3RlZCB0byB0aGUgQ0VSVFVNIENlcnRpZmljYXRpb24gUHJhY3RpY2Ug
U3RhdGVtZW50IChDUFMpIGluY29ycG9yYXRlZCBieSByZWZlcmVuY2UgaGVyZWlu
IGFuZCBpbiB0aGUgcmVwb3NpdG9yeSBhdCBodHRwczovL3d3dy5jZXJ0dW0ucGwv
cmVwb3NpdG9yeS4wHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBEGCWCG
SAGG+EIBAQQEAwIGwDB6BgNVHREEczBxgg5zbXRwLnlhbmRleC5ydYIPc210cC55
YW5kZXguY29tgg5zbXRwLnlhbmRleC5ieYIOc210cC55YW5kZXgua3qCDnNtdHAu
eWFuZGV4LnVhghJzbXRwLnlhbmRleC5jb20udHKCCnNtdHAueWEucnUwDQYJKoZI
hvcNAQEFBQADggEBANUBIrLMkKoHW4zYYacsy1wOuMZiwAG7pxin+UFPZNNPrpoN
Y6TgpgAN3b4IHDkUrQd01ww0dCw5Z7akgPjun9aYszF+mTAjEQ9S0JM8uHA6wPx+
f534rV7Sv6C2X8QmjxOvu9oGbEG3u64HVQIiqmRFH2rtZtPPZHFYK3SWLZAUwL3P
IDELM/Dn7P8hBlbjWSDHndtwYkaRRKLzoOs71+mMxecuBzSdoKMTwuhRXTb0zkaV
FH5SBk7OaQ5xn0E3sL2UnpwwvsIhb03zOqjTrR2UXO5r88PsTG1H50quJbGpUaBT
QvzoYDBJMDRJlVUwCd6++cIP261zTKBFdBxlpdw=
——END CERTIFICATE——
—————————————————————————————————-
Создаем базы из файликов
postmap /etc/postfix/generic
postmap /etc/postfix/canonical
postmap /etc/postfix/sender_relay
postmap /etc/postfix/sasl_passwd
—————————————————————————————————-
Ставим в автозагрузку и рестарт служб
chkconfig postfix on
chkconfig saslauthd on
service saslauthd restart
service postfix restart
—————————————————————————————————-
Если в логах появляются проблемы с авторизацией (said: 503 5.5.4 Error: send AUTH command first. (in reply to MAIL FROM command)) ) — значит вы пытаетесь отправить письмо от клиента не от того пользователя (например от root а не от voicemail@supersperm.ru ) — внимательно смотрите в логах поле From