Разное

Smtp authentication: What Else You Should Know About SMTP Authentication

Содержание

Включение или отключение проверки подлинности SMTP



  • Чтение занимает 4 мин

В этой статье

Отправляемые по электронной почте сообщения SMTP (также называемые отправками SMTP с проверкой подлинности) используются в следующих сценариях в Office 365 и Microsoft 365:Client SMTP email submissions (also known as authenticated SMTP submissions) are used in the following scenarios in Office 365 and Microsoft 365:

  • Клиенты POP3 и IMAP4.POP3 and IMAP4 clients. Эти протоколы позволяют клиентам получать сообщения электронной почты, поэтому для отправки сообщений электронной почты необходимо использовать протокол SMTP с проверкой подлинности.These protocols only allow clients to receive email messages, so they need to use authenticated SMTP to send email messages.

  • Приложения, серверы отчетов и многофункциональные устройства, которые создают и отправляют сообщения электронной почты.Applications, reporting servers, and multifunction devices that generate and send email messages.

Протокол SMTP AUTH используется для отправки электронной почты по протоколу SMTP клиента (как правило, в TCP-порте 587).The SMTP AUTH protocol is used for client SMTP email submission (typically on TCP port 587). Проверка подлинности SMTP не поддерживает современная проверка подлинности (современная проверка подлинности) и используется только обычная проверка подлинности, поэтому все, что вам нужно отправлять сообщения электронной почты, это имя пользователя и пароль.SMTP AUTH doesn’t support modern authentication (Modern Auth), and only uses basic authentication, so all you need to send email messages is a username and password. Это делает SMTP-проверку подлинности наиболее распространенным выбором для отправки нежелательных и фишинговых сообщений с помощью скомпрометированных учетных данных.This makes SMTP AUTH a popular choice for attackers to send spam or phishing messages using compromised credentials.

Практически все современные почтовые клиенты, которые подключаются к почтовым ящикам Exchange Online в Office 365 или Microsoft 365 (например, Outlook, Outlook в Интернете, почта для iOS, Outlook для iOS и Android и т. д.) не используют проверку подлинности SMTP для отправки сообщений электронной почты.Virtually all modern email clients that connect to Exchange Online mailboxes in Office 365 or Microsoft 365 (for example, Outlook, Outlook on the web, iOS Mail, Outlook for iOS and Android, etc.) don’t use SMTP AUTH to send email messages.

Поэтому настоятельно рекомендуется отключить проверку подлинности SMTP в организации Exchange Online и включить ее только для тех учетных записей (почтовых ящиков), которым она необходима.Therefore, we highly recommend that you disable SMTP AUTH in your Exchange Online organization, and enable it only for the accounts (that is, mailboxes) that still require it. Это можно сделать двумя параметрами:There are two settings that can help you do this:

  • Параметр уровня Организации для отключения (или включения) проверки подлинности SMTP.An organization-wide setting to disable (or enable) SMTP AUTH.

  • Параметр для каждого почтового ящика, переопределяющий параметр на уровне клиента.A per-mailbox setting that overrides the tenant-wide setting.

Обратите внимание, что эти параметры применяются только к почтовым ящикам, размещенным в Exchange Online (Office 365 или Microsoft 365).Note these settings only apply to mailboxes that are hosted in Exchange Online (Office 365 or Microsoft 365).

Отключение проверки подлинности SMTP в ОрганизацииDisable SMTP AUTH in your organization

Вы можете отключать (или включать) проверку подлинности SMTP глобально для вашей организации с помощью Exchange Online PowerShell.You can only disable (or enable) SMTP AUTH globally for your organization by using Exchange Online PowerShell.

Чтобы отключить проверку подлинности SMTP глобально в Организации, выполните следующую команду:To disable SMTP AUTH globally in your organization, run the following command:

Set-TransportConfig -SmtpClientAuthenticationDisabled $true

Note: чтобы включить проверку подлинности SMTP, если она уже отключена, используйте значение $false .Note: To enable SMTP AUTH if it’s already disabled, use the value $false.

Как убедиться, что все получилось?How do you know this worked?

Чтобы убедиться, что вы глобально отключили проверку подлинности SMTP в вашей организации, выполните следующую команду и убедитесь, что значение свойства смтпклиентаусентикатиондисаблед True :To verify that you’ve globally disabled SMTP AUTH in your organization, run the following command and verify the value of the SmtpClientAuthenticationDisabled property is True:

Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled

Включение проверки подлинности SMTP для определенных почтовых ящиковEnable SMTP AUTH for specific mailboxes

Параметр для включения или отключения проверки подлинности по почтовому ящику доступен в центре администрирования Microsoft 365 или Exchange Online PowerShell.The per-mailbox setting to enable (or disable) SMTP AUTH is available in the Microsoft 365 admin center or Exchange Online PowerShell.

Использование центра администрирования Microsoft 365 для включения или отключения проверки подлинности SMTP для определенных почтовых ящиковUse the Microsoft 365 admin center to enable or disable SMTP AUTH on specific mailboxes

  1. Откройте центр администрирования Microsoft 365 и перейдите к разделу Пользователи > Активные пользователи.Open the Microsoft 365 admin center and go to Users > Active users.

  2. Выберите пользователя, а затем в появившемся всплывающем меню выберите пункт почта.Select the user, and in the flyout that appears, click Mail.

  3. В разделе почтовые приложения выберите Управление почтовыми приложениями.In the Email apps section, click Manage email apps.

  4. Проверьте параметр протокола SMTP с проверкой подлинности : не отмечено = Disabled, Checked = Enabled.Verify the Authenticated SMTP setting: unchecked = disabled, checked = enabled.

    По завершении нажмите кнопку сохранить изменения.When you’re finished, click Save changes.

Включение или отключение проверки подлинности SMTP для определенных почтовых ящиков с помощью Exchange Online PowerShellUse Exchange Online PowerShell to enable or disable SMTP AUTH on specific mailboxes

Используйте следующий синтаксис:Use the following syntax:

Set-CASMailbox -Identity <MailboxIdentity> -SmtpClientAuthenticationDisabled <$true | $false | $null>

Значение указывает, что $null параметр для почтового ящика управляется глобальным параметром в Организации.The value $null indicates the setting for the mailbox is controlled by the global setting on the organization. $trueДля переопределения параметра Организации используются значения (Disabled) или $false ( override включено).You use the values $true (disabled) or $false (enabled) to override the organization setting. Параметр почтовый ящик имеет приоритет над параметром организация.The mailbox setting takes precedence over the organization setting.

В этом примере включается проверка подлинности SMTP для почтового ящика [email protected] example enables SMTP AUTH for mailbox [email protected].

Set-CASMailbox -Identity [email protected] -SmtpClientAuthenticationDisabled $false

В этом примере показано отключение проверки подлинности SMTP для почтового ящика [email protected] example disables SMTP AUTH for mailbox [email protected].

Set-CASMailbox -Identity [email protected] -SmtpClientAuthenticationDisabled $true

Включение или отключение проверки подлинности SMTP для нескольких почтовых ящиков с помощью Exchange Online PowerShellUse Exchange Online PowerShell to enable or disable SMTP AUTH on multiple mailboxes

Используйте текстовый файл для определения почтовых ящиков.Use a text file to identify the mailboxes. Значения, которые не содержат пробелов (например, псевдоним, адрес электронной почты или имя учетной записи), лучше всего подходят.Values that don’t contain spaces (for example, alias, email address, or account name) work best. Текстовый файл должен содержать один почтовый ящик в каждой строке, как показано ниже.The text file must contain one mailbox on each line like this:

[email protected]@contoso.com
[email protected]@contoso.com
[email protected]@contoso.com

Синтаксис использует следующие две команды (один для определения почтовых ящиков, а другой для включения проверки подлинности SMTP для этих почтовых ящиков):The syntax uses the following two commands (one to identify the mailboxes, and the other to enable SMTP AUTH for those mailboxes):

$<VariableName> = Get-Content "<text file>"
$<VariableName> | foreach {Set-CASMailbox -Identity $_ -SmtpClientAuthenticationDisabled <$true | $false | $null>}

В этом примере включается проверка подлинности SMTP для почтовых ящиков, указанных в файле \ \ Документс\аллов SMTP AUTH.txt SMTP.This example enables SMTP AUTH for the mailboxes specified in the file C:\My Documents\Allow SMTP AUTH.txt.

$Allow = Get-Content "C:\My Documents\Allow SMTP AUTH.txt"
$Allow | foreach {Set-CASMailbox -Identity $_ -SmtpClientAuthenticationDisabled $false}

Примечание: чтобы отключить проверку подлинности SMTP для почтовых ящиков, используйте значение $true .Note: To disable SMTP AUTH for the mailboxes, use the value $true. Чтобы вернуть управление параметру Organization, используйте значение $null .To return control to the organization setting, use the value $null.

Как убедиться, что все получилось?How do you know this worked?

Чтобы убедиться, что вы включили или отключили проверку подлинности SMTP для определенного почтового ящика, выполните одно из указанных ниже действий.To verify that you’ve enabled or disabled SMTP AUTH for a specific mailbox, do any of the following steps:

  • Отдельные почтовые ящики в центре администрирования Microsoft 365: перейти к разделу Пользователи > Активные пользователи > выберите > пункт почта > щелкните Управление приложениями электронной почты и проверьте значение прошедшего проверку подлинности протокола SMTP (checked = Enabled, unchecked = Disabled).Individual mailboxes in the Microsoft 365 admin center: Go to Users > Active users > select the user > click Mail > click Manage email apps and verify the value of Authenticated SMTP (checked = enabled, unchecked = disabled).

  • Отдельные почтовые ящики в Exchange Online PowerShell: Replace <MailboxIdentity> , с именем, псевдонимом, адресом электронной почты или именем учетной записи почтового ящика, выполните следующую команду и проверьте значение свойства смтпклиентаусентикатиондисаблед ( False = Enabled, True = disabled, blank = использовать параметр Организации).Individual mailboxes in Exchange Online PowerShell: Replace <MailboxIdentity>, with the name, alias, email address or account name of the mailbox, run the following command, and verify the value of the SmtpClientAuthenticationDisabled property (False = enabled, True = disabled, blank = use organization setting).

    Get-CASMailbox -Identity <MailboxIdentity>  | Format-List SmtpClientAuthenticationDisabled
    
  • Все почтовые ящики, для которых отключена проверка ПОдлинности SMTP: выполните следующую команду:All mailboxes where SMTP AUTH is disabled: Run the following command:

    $Users = Get-CASMailbox -ResultSize unlimited
    $Users | where {$_.SmtpClientAuthenticationDisabled -eq $true}
    
  • Все почтовые ящики с включенной проверкой ПОдлинности SMTP: выполните следующую команду:All mailboxes where SMTP AUTH is enabled: Run the following command:

    $Users = Get-CASMailbox -ResultSize unlimited
    $Users | where {$_.SmtpClientAuthenticationDisabled -eq $false}
    
  • Все почтовые ящики, для которых Управление проверкой подлинности SMTP осуществляется с помощью параметра организация: выполните следующую команду:All mailboxes where SMTP AUTH is controlled by the organization setting: Run the following command:

    $Users = Get-CASMailbox -ResultSize unlimited
    $Users | where {$_.SmtpClientAuthenticationDisabled -eq $null}
    

Yandex «Почта для домена» как почтовый шлюз для ваших серверов / Блог компании Plesk / Хабр

Каждый раз поднимая новый сервер в облаках, вы получаете случайный IP-адрес. Не все понимают, что IP-адрес может попасть к вам с «историей». Часто приходится тратить время на удаление IP из публичных черных списков. В моём случае в последний раз это была очень неторопливая переписка с mail.ru, которая ни к чему не привела. После этого, создав новый сервер, я задумался: как же сделать так, чтобы не огребать проблем с такими IP-адресами?

Введение

Несмотря на то, что серверы у меня могут быть как постоянные так и «на поиграться», почту на всех них я не обслуживаю, но очень хочу получать сервисные письма от своих скриптов и системных служб.

Очевидное решение — сделать свой «порядочный» почтовый шлюз и все остальные серверы настраивать на пересылку почты через этот шлюз. Минусы такого решения очевидны:

  • Отдельный сервер стоит денег, даже если это дешевая VPSка
  • IP-адрес надо постоянно отслеживать в черных списках
  • Настройка почтового шлюза требует времени, которое зависит от ваших скиллов

Из-за вышеперечисленных причин я пошёл искать другое решение, и, что характерно, нашёл.

Решение

Я обнаружил возможность схалявить, воспользовавшись сервисом «Почта для Домена» от Yandex. На тот момент у меня было поднято 3 сервера и в DNS были следующие А-записи:






ХостТипЗначение
example.comA123.123.123.120
server1.example.comA123.123.123.121
server2.example.comA123.123.123.122
server3.example.comA123.123.123.123

Я зарегистрировал свой технический домен в «Почте для Домена» и создал аккаунт: [email protected]. Попробовал отправить письма с одного из своих серверов, используя этот SMTP-аккаунт и получил следующую ошибку:

553 5.7.1 Sender address rejected: not owned by auth user.
envelope from address [email protected] not accepted by the server

Yandex не разрешает подставлять какие попало данные в envelope-from. Но как же быть, если хочется понимать, с какого сервера пришло то или иное письмо, без дополнительных ухищрений?

Чтобы соблюсти правила Yandex’a, нужно выполнить следующие шаги на стороне их сервиса:

  1. Зарегистрировать основной домен и его поддомены в pdd.yandex.ru. Проще всего пройти подтверждение домена через добавление CNAME-записи:






    ХостТипЗначение
    example.comCNAMEverification-code
    server1.example.comCNAMEverification-code
    server2.example.comCNAMEverification-code
    server3.example.comCNAMEverification-code

  2. Так же для каждого домена создаем MX-запись:






    ХостТипПриоритетЗначение
    example.comMX10mx.yandex.ru
    server1.example.comMX10mx.yandex.ru
    server2.example.comMX10mx.yandex.ru
    server3.example.comMX10mx.yandex.ru

  3. В настройках основного домена указать поддомены как алиасы этого домена.

  4. Создаём почтовый аккаунт [email protected], если он ещё не создан

  5. Обязательно нужно зайти в аккаунт через веб-интерфейc и активировать его, иначе получите ошибку:
    535 5.7.8 Error: authentication failed: Please accept EULA first. https://mail.yandex.ru/for/example.com

Дальше требуется работа на нашей стороне — настраиваем сервера:

  1. Устанавливаем msmtp — миниатюрный SMTP-клиент, который предоставляет свою реализацию sendmail
  2. Настраиваем его:

    defaults
    
    syslog LOG_MAIL
    
    tls_certcheck off
    tls on
    
    auto_from on
    # server hostname
    maildomain server1.example.com
    
    account default
    
    host smtp.yandex.ru
    port 25
    
    auth on
    user [email protected]
    password 123qwe

  3. Отправляем тестовое письмо с отладкой:
    echo -e "test message" | /usr/bin/msmtp --debug -t -i [email protected]

    и смотрим результат:

    loaded system configuration file /etc/msmtprc
    ignoring user configuration file /root/.msmtprc: No such file or directory
    falling back to default account
    using account default from /etc/msmtprc
    host = smtp.yandex.ru
    port = 25
    proxy host = (not set)
    proxy port = 0
    timeout = off
    protocol = smtp
    domain = localhost
    auth = choose
    user = [email protected]
    password = *
    ntlmdomain = (not set)
    tls = on
    tls_starttls = on
    tls_trust_file = (not set)
    tls_crl_file = (not set)
    tls_fingerprint = (not set)
    tls_key_file = (not set)
    tls_cert_file = (not set)
    tls_certcheck = off
    tls_min_dh_prime_bits = (not set)
    tls_priorities = (not set)
    auto_from = on
    maildomain = server1.example.com
    from = [email protected]
    add_missing_from_header = on
    add_missing_date_header = on
    remove_bcc_headers = on
    dsn_notify = (not set)
    dsn_return = (not set)
    logfile = (not set)
    syslog = LOG_MAIL
    aliases = (not set)
    reading recipients from the command line and the mail
    <-- 220 smtp3h.mail.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)
    --> EHLO localhost
    <-- 250-smtp3h.mail.yandex.net
    <-- 250-8BITMIME
    <-- 250-PIPELINING
    <-- 250-SIZE 42991616
    <-- 250-STARTTLS
    <-- 250-AUTH LOGIN PLAIN XOAUTh3
    <-- 250-DSN
    <-- 250 ENHANCEDSTATUSCODES
    --> STARTTLS
    <-- 220 Go ahead
    TLS certificate information:
    Owner:
        Common Name: smtp.yandex.ru
        Organization: Yandex LLC
        Organizational unit: ITO
        Locality: Moscow
        State or Province: Russian Federation
        Country: RU
    Issuer:
        Common Name: Yandex CA
        Organization: Yandex LLC
        Organizational unit: Yandex Certification Authority
        Country: RU
    Validity:
        Activation time: Mon 12 Oct 2015 03:41:24 PM MSK
        Expiration time: Wed 11 Oct 2017 03:41:24 PM MSK
    Fingerprints:
        SHA1: B7:0E:62:55:E1:3A:C0:F3:08:12:35:B2:9D:4B:25:D0:B8:C1:C6:39
        MD5:  BC:15:CE:B6:D4:FF:0D:95:4F:E5:1A:A7:3A:DF:DA:65
    --> EHLO localhost
    <-- 250-smtp3h.mail.yandex.net
    <-- 250-8BITMIME
    <-- 250-PIPELINING
    <-- 250-SIZE 42991616
    <-- 250-AUTH LOGIN PLAIN XOAUTh3
    <-- 250-DSN
    <-- 250 ENHANCEDSTATUSCODES
    --> AUTH PLAIN AhJvb3ARY29uzMlntS5ydQBXYw5VcMMlazk=
    <-- 235 2.7.0 Authentication successful.
    --> MAIL FROM:<[email protected]>
    --> RCPT TO:<[email protected]>
    --> DATA
    <-- 250 2.1.0 <[email protected]> ok
    <-- 250 2.1.5 <[email protected]> recipient ok
    <-- 354 Enter mail, end with "." on a line by itself
    --> From: [email protected]
    --> Date: Mon, 06 Jun 2016 16:17:00 +0300
    --> test message
    --> .
    <-- 250 2.0.0 Ok: queued on smtp3h.mail.yandex.net as 1465219021-86hlZkGCpZ-H0J8ORE2
    --> QUIT
    <-- 221 2.0.0 Closing connection.

    Отлично, успех! Письмо ушло, правда, найдем мы его в спаме, так как оно почему-то пустое. Давайте проверим более привычным и «человеческим» способом:

    echo "test message" | mailx -s 'test subject' [email protected]

    Вот, теперь в ящике нормальное письмо. Здорово!

    DKIM & SPF

    А еще можно для каждого домена прописать записи DKIM и SPF. Если вы, как я, используете свой DNS-хостинг, то просто скопируйте соответствующие значения из “DNS редактора” в интерфейсе Яндекса. Внимание: для каждого домена и алиаса свой ключ!






    ХостТипЗначение
    mail._domainkey.example.comTXTv=DKIM1; k=rsa; t=s; p=MIGf…
    mail._domainkey.server1.example.comTXTv=DKIM1; k=rsa; t=s; p=MIGf…
    mail._domainkey.server2.example.comTXTv=DKIM1; k=rsa; t=s; p=MIGf…
    mail._domainkey.server3.example.comTXTv=DKIM1; k=rsa; t=s; p=MIGf…

    Отсылаем с сервера письмо и смотрим в заголовки:

    DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=mail; t=1467009762;
        bh=Pb6s/Xlf4...
    Authentication-Results: smtp14.mail.yandex.net; dkim=pass [email protected]

    Лепота!

    В случае если отправка почты для домена будет происходить только через сервера Яндекс и с заранее известных IP-адресов, то можно смело прописать SPF-записи в соответствии с документацией https://yandex.ru/support/pdd/troubleshooting/dns.xml#step2






    ХостТипЗначение
    example.comTXTv=spf1 redirect=_spf.yandex.net
    server1.example.comTXTv=spf1 redirect=_spf.yandex.net
    server2.example.comTXTv=spf1 redirect=_spf.yandex.net
    server3.example.comTXTv=spf1 redirect=_spf.yandex.net

    Нюансы

    Скорее всего, вы молодцы, и ваше приложение работает не из под root’а. Попытка послать письмо из-под обычного пользователя опять приведёт к знакомой ошибке в логе msmtp:

    Jun  6 14:21:24 server1 msmtp: host=smtp.yandex.ru tls=on auth=on [email protected] [email protected] [email protected] smtpstatus=553 smtpmsg='553 5.7.1 Sender address rejected: not owned by auth user.' errormsg='envelope from address [email protected] not accepted by the server' exitcode=EX_DATAERR

    Можно решить эту проблему по-разному. Например, можно явно указывать пользователя, отключив опцию auto_from off в msmtp. Но я уже решил, что меня это не устраивает.

    Правильное решение — добавить пользователя как алиас для нашего основного адреса:

    Если вам требуется локальный SMTP-релей, то данная конфигурация вам тоже подходит. Нужно просто заменить msmtp на postfix или exim, настроенные на использование серверов Яндекса в качестве smart host’a (гуглить можно, например, по ключевым словам exim smarthost).

    Резюме

    Теперь любой сервер, который я поднимаю для своих задачек, сразу же получает настроенный канал отправки почты. В DNS и pdd.yandex.ru я заранее прописал несколько поддоменов про запас. Так как сервера я разворачиваю через SaltStack, то конфигурацию msmtp мои сервера получают автоматически.

    Что я получил в итоге:

    1. Самое главное — нет заморочек с черными списками и IP-адресами серверов, так как письма уходят через сервера Яндекса
    2. DKIM/SPF «из коробки» — письма не попадают в спам
    3. msmtp простой SMTP-клиент, которому даже в памяти сервера висеть не нужно — запускается по необходимости
    4. msmtp — простейшая настройка в отличие от «взрослых» postfix, exim
    5. можно не беспокоиться о PTR-записях для ваших IP-адресов с точки зрения почтовой системы.

    Надеюсь эта инструкция кому-нибудь пригодится. Буду рад узнать из комментариев, кто и как решает подобную проблему.

Postfix | Русскоязычная документация по Ubuntu

Postfix

Postfix является агентом передачи почты (MTA) в Ubuntu по умолчанию. Он разработан чтобы быть быстрым, простым в администрировании и безопасным. Он совместим с MTA sendmail. Этот раздел описывает как установить и настроить postfix. Здесь также разъясняется как сделать его SMTP сервером, использующим безопасные соединения (для безопасной передачи сообщений).

Это руководство не рассматривает настройку виртуальных доменов postfix. Для получения информации по виртуальным доменам и другим расширенным настройкам смотрите Ссылки.

Установка

Для установки postfix выполните следующую команду:

sudo apt-get install postfix

Просто нажимайте ввод когда процесс установки задает вопросы, очень детальная настройка будет выполнена на следующем этапе.

Базовая настройка

Для настройки postfix, выполните следующую команду:

sudo dpkg-reconfigure postfix

Будет запущен пользовательский интерфейс. На каждом экране выбирайте следующие значения:

  1. mail.example.com, localhost.localdomain, localhost

  2. 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/16

Замените mail.example.com на домен, для которого вы настраиваете email, 192.168.0.0/24 на актуальную подсеть и маску для вашего почтового сервера и steve на соответствующее имя пользователя.

Теперь самое время решить какой формат почтового ящика вы хотите использовать. По умолчанию postfix использует формат mbox. Вместо непосредственного редактирования файла конфигурации вы можете использовать команду postconf для настройки параметров postfix. Параметры будут сохранены в файле /etc/postfix/main.cf. В дальнейшем если вы решите переконфигурировать отдельные параметры вы можете как запустить команду, так и вручную поправить файл.

Для настройки формата почтового ящика для Maildir:

sudo postconf -e 'home_mailbox = Maildir/'

Это поместит новую почту в /home/username/Maildir, поэтому вам потребуется настроить вашего агента доставки почты (MDA) на использование этого же каталога.

Аутентификация SMTP

SMTP-AUTH позволяет клиенту идентифицировать себя через механизм аутентификации (SASL). Транспортный уровень безопасности (TLS) будет использоваться для шифрования процесса аутентификации. После аутентификации SMTP сервер позволит клиенту передавать почту.

1. Настройте Postfix на SMTP-AUTH с использованием SASL (Dovecot SASL):

sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth-client'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = \
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

Настройка smtpd_sasl_path является путем, относительным к каталогу запросов Postfix.

2. Далее создайте или получите цифровой сертификат для TLS. Смотрите подробности в разделе Сертификаты. Этот пример также использует Центр сертификации (CA). Для информации по созданию сертификатов CA смотрите раздел Центр сертификации.

Почтовым агентам пользователей (MUA), подключающимся к вашему почтовому серверу через TLS, потребуется распознать сертификат, используемый для TLS. Это может быть сделано либо с использованием сертификата от коммерческого центра сертификации, либо с самоподписанным сертификатом, который пользователи вручную установили. Для TLS между MTA (почтовыми агентами передачи) сертификаты никогда не подтверждаются без дополнительного соглашения с контролирующими организациями. Поэтому для таких соединений, если локальные политики этого не требуют, нет резона не использовать самоподписанные сертификаты. Смотрите подробности в разделе Создание самоподписанного сертификата.

3. Как только у вас появился сертификат, настройте Postfix на использование TLS шифрования как для входящей, так и для исходящей почты:

sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'myhostname = mail.example.com'

4. Если вы используете собственный Центр сертификации, для подписи сертификата введите:

sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

Опять же, для подробностей смотрите раздел Сертификаты.

После выполнения всех команд Postfix настроен на SMTP-AUTH и самоподписанный сертификат создан для TLS шифрования.

Начальная настройка postfix закончена. Выполните следующую команду для перезапуска сервиса postfix:

sudo /etc/init.d/postfix restart

Postfix поддерживает SMTP-AUTH как описано в RFC2554. Он основан на SASL. Однако все-таки необходимо настроить аутентификацию перед тем, как вы сможете использовать SMTP-AUTH.

Настройка SASL

Postfix поддерживает две реализации SASL: Cyrus SASL и Dovecot SASL. Чтобы разрешить Dovecot SASL, требуется установить пакет dovecot-common. Для этого из терминала введите следующее:

sudo apt-get install dovecot-common

Далее вам потребуется отредактировать /etc/dovecot/dovecot.conf. В секции auth default снимите комментарий с опции socket listen и измените ее следующим образом:

  socket listen {
    #master {
      # Master socket provides access to userdb information. It's typically
      # used to give Dovecot's local delivery agent access to userdb so it
      # can find mailbox locations.
      #path = /var/run/dovecot/auth-master
      #mode = 0600
      # Default user/group is the one who started dovecot-auth (root)
      #user = 
      #group = 
    #}
    client {
      # The client socket is generally safe to export to everyone. Typical use
      # is to export it to your SMTP server so it can do SMTP AUTH lookups
      # using it.
      path = /var/spool/postfix/private/auth-client
      mode = 0660
      user = postfix
      group = postfix
    }
  }

Чтобы позволить использовать SMTP-AUTH клиентам Outlook, в секции auth default файла /etc/dovecot/dovecot.conf добавьте «login»:

  mechanisms = plain login

После того, как Dovecot настроен, перезапустите его:

sudo /etc/init.d/dovecot restart

Почтовый стек доставки

Другой опцией настройки Postfix для SMTP-AUTH является использование пакета mail-stack-delivery (ранее он назывался dovecot-postfix). Этот пакет установит Dovecot и настроит Postfix для его использования совместно с SASL аутентификацией и как агента доставки почты (MDA). Пакет также настроит Dovecot для IMAP, IMAPS, POP3 и POP3S.

Вы можете захотеть или не захотеть использовать IMAP, IMAPS, POP3, или POP3S на вашем почтовом сервере. Например, если вы настраиваете свой сервер в качестве почтового шлюза, фильтра спама и вирусов и т.п. В этом случае возможно будет проще использовать вышеприведенные команды для настройки Postfix на SMTP_AUTH.

Чтобы установить пакет, введите в терминале:

sudo apt-get install mail-stack-delivery

У вас теперь рабочий почтовый сервер, но существует несколько опций, которые вы, возможно, захотите изменить в дальнейшем. Например, пакет использует сертификат и ключ от ssl-cert пакета, и в рабочей среде, вы должны использовать сертификат и ключ, сгенерированный для хоста. Смотрите радел Сертификаты для дополнительных деталей.

После того, как вы получили заказанный сертификат для сервера, замените следующую опцию в /etc/postfix/main.cf:

smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key

Перезапустите Postfix:

sudo /etc/init.d/postfix restart

Тестирование

Настройка SMTP-AUTH завершена. Теперь самое время проверить настройки.

Чтобы убедиться, что SMTP-AUTH и TLS работают правильно, выполните следующую команду:

telnet mail.example.com 25

После установления соединения с почтовым сервером postfix введите:

ehlo mail.example.com

Если среди прочего вы увидите следующие строки, все работает замечательно. Введите quit для выхода.

250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME

Решение проблем

Эта секция описывает несколько общих способов определения причин возникающих проблем.

Отказ от режима chroot

Пакет postfix в Ubuntu по умолчанию устанавливается в окружении chroot из соображений безопасности. Это может дополнительно усложнить процесс поиска решения проблем.

Для отключения функционирования chroot, найдите следующую строку в файле настроек /etc/postfix/master.cf:

smtp      inet  n       -       -       -       -       smtpd

И замените на следующее:

smtp      inet  n       -       n       -       -       smtpd

После этого вам придется перезапустить Postfix для использования новых настроек. Из терминал введите следующее:

sudo /etc/init.d/postfix restart
Файлы журналов

Postfix посылает все сообщения в журнал /var/log/mail.log. Однако сообщения об ошибках и предупреждения могут иногда теряться в нормальном журнале, поэтому они отдельно сохраняются в /var/log/mail.err и /var/log/mail.warn соответственно.

Для просмотра сообщений журнала в режиме реального времени вы можете использовать команду tail -f:

tail -f /var/log/mail.err

Количество деталей, записываемых в журнал, может быть увеличено. Ниже приведено несколько опций настройки для увеличения уровня детализации некоторых областей, описанных выше.

1. Для увеличения TLS активности журнала, установите опции smtpd_tls_loglevel значение от 1 до 4.

sudo postconf -e 'smtpd_tls_loglevel = 4'

2. Если вы испытываете трудности с отправкой или приемом почты отдельного домена, вы можете включить его в параметр debug_peer_list.

sudo postconf -e 'debug_peer_list = problem.domain'

3. Вы можете увеличить детализацию любого сервиса Postfix редактированием /etc/postfix/master.cf, добавив -v после соответствующей записи. Для примера изменим запись smtp:

smtp      unix  -       -       -       -       -       smtp -v

Важно помнить, что после внесения изменений настроек журналирования процессов, Postfix требуется перезапустить для восприятия новой конфигурации:

sudo /etc/init.d/postfix reload

4. Для увеличения количества информации в журнале при поиске проблем с SASL, вы можете установить следующие опции в /etc/dovecot/dovecot.conf:

auth_debug=yes
auth_debug_passwords=yes

Как и в случае с Postfix, если вы изменяете настройки Dovecot, процесс требуется перезапустить:

sudo /etc/init.d/dovecot reload

Некоторые опции выше могут серьезно увеличить объем информации, передаваемой в файлы журналов. Не забывайте возвращать уровень детализации журналов к нормальному значению после решения проблем. Затем перезапустите соответствующий сервис, чтобы изменения настройки вступили в силу.

Ссылки

Администрирование сервера Postfix может быть очень сложной задачей. В какой-то момент вам может потребоваться обратиться к сообществу Ubuntu для более квалифицированной помощи.

Хорошее место задать вопрос по сопровождению Postfix и влиться в сообщество Ubuntu Server, это IRC канал #ubuntu-server на freenode. Вы также можете отправить сообщение на один из интернет форумов.

Для погружения в информацию по Postfix очень рекомендуется прочитать The Book of Postfix.

Наконец сайт Postfix также содержит много информации по всем возможным опциям настройки.

Кроме того страница Ubuntu Wiki Postfix содержит дополнительную информацию.


Ошибка в Gmail:SMTP-сервер требует защищенного соединения или клиент не прошел проверку подлинности. Ответ сервера: 5.5.1 требуется аутентификация

проведя пару часов сегодня, пробуя каждое решение здесь, я все еще не смог пройти мимо этой точной ошибки. Я использовал gmail много раз таким образом, поэтому я знал, что это было что-то глупое, но ничего я не сделал, исправил проблему. Я, наконец, наткнулся на решение в моем случае, поэтому думал, что поделюсь.

во-первых, большинство ответов выше также требуются, но в моем случае это был простой вопрос упорядочения кода при создании SmtpClient класс.

в этом первом фрагменте кода ниже обратите внимание, где находится строка» Credentials = creds». Эта реализация создаст ошибку, указанную в этом вопросе, даже если все остальное настроено правильно.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            Credentials = creds,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
        }

однако, если вы переместите вызов установщика учетных данных вниз, электронное письмо будет отправлено без ошибок. Я не внес никаких изменений в окружающий код … то есть … имя пользователя / пароль и т. д. Очевидно, либо EnableSSL, UseDefaultCredentials, или DeliveryMethod зависит от учетных данных, устанавливаемых в первую очередь….Я не проверял все, чтобы выяснить, какой это был.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            Credentials = creds
        }

надеюсь, это поможет спасти кого-то от головной боли в будущем.

Включение или отключение проверки подлинности SMTP

  • Чтение занимает 4 мин

В этой статье

Отправляемые по электронной почте SMTP (также называемые отправками SMTP с проверкой подлинности ) используются в следующих сценариях в Office 365 и Microsoft 365: отправка клиентской электронной почты SMTP (также известная как отправка SMTP с проверкой подлинности ) используется в следующих сценариях в Office 365 и Microsoft 365:

  • Клиенты POP3 и IMAP4.Клиенты POP3 и IMAP4. Эти протоколы предоставляют клиентам получать сообщений электронной почты, поэтому для отправки сообщений электронной почты необходимо использовать протокол SMTP с проверкой подлинности. Эти протоколы позволяют клиентам только получать сообщения электронной почты , поэтому им необходимо использовать аутентифицированный SMTP для отправки сообщений сообщения электронной почты.

  • Приложения, серверы отчетов и многофункциональные устройства, которые создают и отправляют сообщения электронной почты.Приложения, серверы отчетов и многофункциональные устройства, которые создают и отправляют сообщения электронной почты.

Протокол SMTP AUTH используется для отправки электронной почты по протоколу SMTP клиента (как правило, в TCP-порте 587). Протокол SMTP AUTH используется для отправки электронной почты клиента SMTP (обычно через TCP-порт 587). Проверка подлинности SMTP не поддерживает современная проверка подлинности (современная проверка подлинности) и используется только обычная проверка подлинности, поэтому все, что вам нужно отправлять сообщения электронной почты, это имя пользователя и пароль.SMTP AUTH не поддерживает современную аутентификацию (Modern Auth) и использует только базовую аутентификацию, поэтому все, что вам нужно для отправки сообщений электронной почты, — это имя пользователя и пароль. Это делает проверку подлинности наиболее распространенных распространенных сообщений с помощью скомпрометированных учетных данных. Это делает SMTP AUTH популярным выбором для злоумышленников для рассылки спама или фишинговых сообщений с использованием скомпрометированных учетных данных.

Практически все современные почтовые клиенты, которые подключаются к почтовым ящикам Exchange Online в Office 365 или Microsoft 365 (например, Outlook, Outlook в Интернете, почта для iOS, Outlook для iOS и Android и т.д.) не используют проверку подлинности SMTP для отправки электронной почты. Практически все современные почтовые клиенты, которые подключаются к почтовым ящикам Exchange Online в Office 365 или Microsoft 365 (например, Outlook, Outlook в Интернете, Почта iOS, Outlook для iOS и Android и т. д.) не используйте SMTP AUTH для отправки сообщений электронной почты.

Поэтому настоятельно рекомендуется отключить проверку подлинности SMTP в организации Exchange Online и включить ее только для тех учетных записей (почтовых ящиков), которым она необходима.Поэтому мы настоятельно рекомендуем отключить SMTP AUTH в вашей организации Exchange Online и включить его только для учетных записей (то есть почтовых ящиков), которые все еще нуждаются в нем. Это можно сделать двумя элементами: В этом вам помогут две настройки:

  • Параметр уровня Организации для отключения (или включения) проверки подлинности SMTP. Общесистемная настройка для отключения (или включения) SMTP AUTH.

  • Параметр для каждого почтового ящика, переопределяющий параметр на уровне клиента.Параметр для почтового ящика, который переопределяет настройку для клиента.

Обратите внимание, что эти параметры применяются только к почтовым ящикам, размещенным в Exchange Online (Office 365 или Microsoft 365). Обратите внимание, что эти параметры применяются только к почтовым ящикам, размещенным в Exchange Online (Office 365 или Microsoft 365).

Отключение проверки подлинности SMTP в Организации Отключение проверки подлинности SMTP в вашей организации

Вы можете отключить проверку подлинности SMTP глобально для вашей организации с помощью Exchange Online PowerShell.Вы можете отключить (или включить) SMTP AUTH глобально для своей организации только с помощью Exchange Online PowerShell.

Чтобы отключить проверку подлинности SMTP глобально в Организации, выполните следующую команду: Чтобы отключить SMTP AUTH глобально в вашей организации, выполните следующую команду:

  Set-TransportConfig -SmtpClientAuthenticationDisabled $ true
  

Примечание : чтобы включить проверку подлинности SMTP, если она уже отключена, викорите значение $ false . Примечание : Чтобы включить SMTP AUTH, если он уже отключен, используйте значение $ false .

Как убедиться, что все получилось? Откуда вы знаете, что это сработало?

Чтобы убедиться, что вы глобально отключили вашу проверку подлинности SMTP в организации, выполните следующую команду и убедитесь, что значение свойства смтпклиентаусентикатиондисаблед Истина : Чтобы убедиться, что вы глобально отключили SMTP AUTH в своей организации, выполните следующую команду и проверьте, что значение свойства SmtpClientAuthenticationDisabled равно True :

  Get-TransportConfig | Список форматов SmtpClientAuthenticationDisabled
  

Включение проверки подлинности SMTP для определенных почтовых ящиков Включение SMTP AUTH для определенных почтовых ящиков

Параметр для включения или отключения проверки подлинности по почтовому ящику доступен в центре администрирования Microsoft 365 или Exchange Online PowerShell.Параметр для каждого почтового ящика для включения (или отключения) SMTP AUTH доступен в центре администрирования Microsoft 365 или в Exchange Online PowerShell.

Использование центра администрирования Microsoft 365 для включения или отключения проверки подлинности SMTP для определенных почтовых ящиков Используйте центр администрирования Microsoft 365 для включения или отключения SMTP AUTH для определенных почтовых ящиков.

  1. Откройте центр администрирования Microsoft 365 и дальше к разделу Пользователи > Активные пользователи .Откройте центр администрирования Microsoft 365 и перейдите к Пользователи > Активные пользователи .

  2. Выберите пользователя, а затем появится всплывающее меню пункта почта . Выберите пользователя и во всплывающем меню щелкните Mail .

  3. В разделе почтовые приложения Управление почтовыми приложениями .В разделе Приложения электронной почты щелкните Управление приложениями электронной почты .

  4. Проверьте параметр протокола SMTP с проверкой подлинности : не принято = Отключено, Проверено = Включено. Проверьте параметр Authenticated SMTP : unchecked = disabled, checked = enabled.

    По завершении нажмите кнопку Сохранить изменения . По завершении нажмите Сохранить изменения .

Включение или отключение проверки подлинности SMTP для определенных почтовых ящиков с помощью Exchange Online PowerShell Используйте Exchange Online PowerShell для включения или отключения SMTP AUTH для определенных почтовых ящиков

Используйте следующий синтаксис: Используйте следующий синтаксис:

  Set-CASMailbox -Identity  -SmtpClientAuthenticationDisabled <$ true | $ false | $ null>
  

Значение указывает, что $ null параметр для почтового ящика управляется глобальным параметром в Организации.Значение $ null указывает, что параметр почтового ящика контролируется глобальным параметром организации. $ true Для переопределения элементов используются значения (Отключено) или $ false ( переопределение включено). Используйте значения $ true (отключено) или $ false (включено), чтобы переопределить организацию настройка. Параметр почтовый ящик имеет приоритет над параметром организации. Настройка почтового ящика имеет приоритет над настройкой организации.

В этом примере включается проверка подлинности SMTP для почтового ящика [email protected]. В этом примере включается SMTP AUTH для почтового ящика [email protected].

  Set-CASMailbox -Identity [email protected] -SmtpClientAuthenticationDisabled $ false
  

В этом примере показано отключение проверки подлинности SMTP для почтового ящика [email protected]. В этом примере отключается SMTP AUTH для почтового ящика [email protected].

  Set-CASMailbox -Identity chris @ contoso.com -SmtpClientAuthenticationDisabled $ true
  

Включение или отключение проверки подлинности SMTP для нескольких почтовых ящиков с помощью Exchange Online PowerShell Используйте Exchange Online PowerShell для включения или отключения SMTP AUTH для нескольких почтовых ящиков.

Используйте текстовый файл для определения почтовых ящиков. Используйте текстовый файл для определения почтовых ящиков. Значения, которые не содержат пробелов (например, псевдоним, адрес электронной почты или имя учетной записи), лучше всего подходят.Лучше всего подходят значения, не содержащие пробелов (например, псевдоним, адрес электронной почты или имя учетной записи). Текстовый файл должен содержать один почтовый ящик в каждой строке, как показано ниже. Текстовый файл должен содержать по одному почтовому ящику в каждой строке, например:

akol @ contoso.comakol @ contoso.com
tjohnston @ contoso.comtjohnston @ contoso.com
kakers @ contoso.comkakers @ contoso.com

Синтаксис использует две следующие команды (один для определения почтовых ящиков, другие для проверки подлинности SMTP для этих почтовых ящиков): в синтаксисе используются следующие две команды (одна для идентификации почтовых ящиков, а другая для включения SMTP AUTH для этих почтовых ящиков). ):

  $  = Get-Content "<текстовый файл>"
$  | foreach {Set-CASMailbox -Identity $ _ -SmtpClientAuthenticationDisabled <$ true | $ false | $ null>}
  

В этом примере включается проверка подлинности SMTP для почтовых ящиков, указанного в файле \ \ Документс \ аллов SMTP AUTH.txt SMTP. Этот пример включает SMTP AUTH для почтовых ящиков, указанных в файле C: \ My Documents \ Allow SMTP AUTH.txt.

  $ Allow = Get-Content "C: \ My Documents \ Allow SMTP AUTH.txt"
$ Разрешить | foreach {Set-CASMailbox -Identity $ _ -SmtpClientAuthenticationDisabled $ false}
  

Примечание : чтобы отключить проверку подлинности SMTP для почтовых ящиков, используйте значение $ true . Примечание : Чтобы отключить SMTP AUTH для почтовых ящиков, используйте значение $ true .Чтобы вернуть управление параметрами Organization, викорите значение $ null . Чтобы вернуть управление параметрам организации, используйте значение $ null .

Как убедиться, что все получилось? Откуда вы знаете, что это сработало?

Чтобы убедиться, что вы включили или отключили проверку подлинности SMTP для определенного почтового ящика, выполните одно из указанных ниже действий.Чтобы убедиться, что вы включили или отключили SMTP AUTH для определенного почтового ящика, выполните одно из следующих действий:

  • Отдельные почтовые ящики в центре администрирования Microsoft 365 : перейти к разделу Пользователи > Активные пользователи > выберите пункт почта > щелкните Управление приложениями электронной почты и проверьте значение прошедшего проверку подлинности протокола SMTP (отмечено = включено, не отмечено = отключено). Отдельные почтовые ящики в центре администрирования Microsoft 365 : перейдите к Пользователи > Активные пользователи > выберите пользователя> щелкните Почта > щелкните Управление почтовыми приложениями и проверьте значение Authenticated SMTP (отмечено = включено , не отмечено = отключено).

  • Отдельные почтовые ящики в Exchange Online PowerShell : Замените , с именем, псевдонимом, адресом электронной почты или именем учетной записи почтового ящика, выполните следующую процедуру и проверьте значение смтпклиентаусентикатиондисаблед ( False = Включено , Истина = отключено, пусто = использовать параметр Организации). Отдельные почтовые ящики в Exchange Online PowerShell : замените на имя, псевдоним, адрес электронной почты или имя учетной записи почтового ящика, выполните следующую команду и проверьте значение свойства SmtpClientAuthenticationDisabled ( False = включено, Истинно = отключено, пусто = использовать настройки организации).

      Get-CASMailbox -Identity  | Список форматов SmtpClientAuthenticationDisabled
      
  • Все почтовые ящики, для которых отключена проверка ПОдлинности SMTP : выполните следующую команду: Все почтовые ящики, для которых отключен SMTP AUTH : Выполните следующую команду:

      $ Пользователи = Get-CASMailbox -ResultSize без ограничений
    $ Пользователи | где {$ _.SmtpClientAuthenticationDisabled -eq $ true}
      
  • Все почтовые ящики с включенной проверкой ПОдлинности SMTP : выполните следующую команду: Все почтовые ящики, для которых включена SMTP AUTH : Выполните следующую команду:

      $ Пользователи = Get-CASMailbox -ResultSize без ограничений
    $ Пользователи | где {$ _. SmtpClientAuthenticationDisabled -eq $ false}
      
  • Все почтовые ящики, для которых выполняется проверка подлинности SMTP с помощью организации : выполните следующую команду: Все почтовые ящики, для которых проверка подлинности SMTP контролируется настройкой организации : Выполните следующую команду:

      $ Пользователи = Get-CASMailbox -ResultSize без ограничений
    $ Пользователи | где {$ _.SmtpClientAuthenticationDisabled -eq $ null}
      

.

Яндекс «Почта для домена» как почтовый шлюз для ваших серверов / Блог компании Plesk / Хабр

Каждый поднимающий новый сервер в облаках, вы получаете случайный IP-адрес. Не все понимают, что IP-адрес может попасть к вам с «историей». Часто приходится тратить время на IP из публичных черных списков. В моём случае в последний раз это была очень неторопливая переписка с mail.ru, которая ни к чему не привела. Я задумался: как же сделать так, чтобы не огребать проблемы с такими IP-адресами?

Введение

Несмотря на то, что серверы у меня могут быть как постоянные так и «на поиграться», почту на всех них я не обслуживаю, но очень хочу получать сервисные письма от своих скриптов и системных служб.

Очевидное решение — сделать свой «порядочный» почтовый шлюз и все остальные серверы настраивать на пересылку почты через этот шлюз. Минусы такого решения очевидны:

  • Отдельный сервер стоит денег, даже если это дешевая VPSка
  • IP-адрес надо постоянно в черных списках
  • Настройка почтового шлюза требует времени, которое зависит от ваших скиллов

Из-за вышеперечисленных причин я пошёл искать другое решение, и, что характерно, нашёл.

Решение

Я обнаружил возможность схалявить, воспользовавшись сервисом «Почта для Домена» от Яндекс. На тот момент у меня было поднято 3 сервера и в DNS были следующие А-записи:

Хост Тип Значение
example.com А 123.123.123.120
server1.example.com А 123.123.123.121
server2.example.com А 123.123.123.122
server3.example.com А 123.123.123.123

Я зарегистрировал свой технический домен в «Почте для Домена» и создал аккаунт: [email protected] . Попробовал отправить письма с одного из своих серверов, используя этот SMTP-аккаунт и получил следующую ошибку:

  553 5.7.1 Адрес отправителя отклонен: не принадлежит пользователю авторизации.
конверт с адреса [email protected] не принимается сервером  

Яндекс не разрешает подставлять какие попало данные в конверт - от . Как же быть, если хочется понимать, с какого сервера пришло то письмо, без дополнительных ухищрений?

Чтобы соблюсти правила Yandex’a, нужно выполнить следующие шаги на стороне их сервиса:

  1. Зарегистрировать домен и его поддомены в pdd.yandex.ru. Проще пройти подтверждение домена через добавление CNAME-записи:

    Хост Тип Значение
    example.com CNAME проверочный код
    server1.example.com CNAME проверочный код
    server2.example.com CNAME проверочный код
    сервер3.example.com CNAME проверочный код

  2. Так же для каждого домена создаем MX-запись:

    Хост Тип Приоритет Значение
    example.com MX 10 mx.yandex.ru
    server1.example.com MX 10 мкс.yandex.ru
    server2.example.com MX 10 mx.yandex.ru
    server3.example.com MX 10 mx.yandex.ru

  3. В настройках основного домена указать поддомены как алиасы этого домена.

  4. Создаём почтовый аккаунт [email protected] , если он ещё не создан

  5. Обязательно нужно зайти в аккаунт через веб-интерфейс и активировать его, иначе получите ошибку:
      535 5.7.8 Ошибка: ошибка аутентификации: сначала примите лицензионное соглашение. https://mail.yandex.ru/for/example.com  

Дальше требуется работа на нашей стороне — настраиваем сервер:

  1. Устанавливаем msmtp — миниатюрный SMTP-клиент, который использует свою sendmail
  2. Настраиваем его:

      по умолчанию
    
    системный журнал LOG_MAIL
    
    tls_certcheck off
    TLS на
    
    auto_from на
    # имя хоста сервера
    maildomain server1.example.com
    
    аккаунт по умолчанию
    
    хост smtp.yandex.ru
    порт 25
    
    авторизация на
    пользователь [email protected]
    пароль 123qwe  

  3. Отправляем тестовое письмо с отладкой:
      echo -e "test message" | / usr / bin / msmtp --debug -t -i [email protected]  

    и смотрим результат:

      загруженный файл конфигурации системы / etc / msmtprc
    игнорирование файла конфигурации пользователя /root/.msmtprc: нет такого файла или каталога
    возврат к учетной записи по умолчанию
    с использованием учетной записи по умолчанию из / etc / msmtprc
    хост = smtp.yandex.ru
    порт = 25
    прокси-сервер = (не установлен)
    порт прокси = 0
    тайм-аут = выкл
    протокол = smtp
    домен = localhost
    auth = выбрать
    пользователь = [email protected]
    пароль = *
    ntlmdomain = (не задано)
    tls = on
    tls_starttls = on
    tls_trust_file = (не задано)
    tls_crl_file = (не установлено)
    tls_fingerprint = (не задано)
    tls_key_file = (не задано)
    tls_cert_file = (не задано)
    tls_certcheck = off
    tls_min_dh_prime_bits = (не задано)
    tls_priorities = (не задано)
    auto_from = on
    maildomain = server1.example.com
    from = [email protected]
    add_missing_from_header = on
    add_missing_date_header = on
    remove_bcc_headers = включено
    dsn_notify = (не задано)
    dsn_return = (не задано)
    logfile = (не установлен)
    syslog = LOG_MAIL
    aliases = (не задано)
    чтение получателей из командной строки и почты
    <- 220 smtp3h.mail.yandex.net ESMTP (Хотите использовать Яндекс.Почту для своего домена? Посетите http://pdd.yandex.ru)
    -> EHLO localhost
    <- 250-smtp3h.mail.yandex.net
    <- 250-8BITMIME
    <- 250-ТРУБОПРОВОД
    <- 250-РАЗМЕР 42991616
    <- 250-STARTTLS
    <- 250-AUTH LOGIN PLAIN XOAUTh3
    <- 250-DSN
    <- 250 УЛУЧШЕННЫХ КОДОВ СТАТУСОВ
    -> STARTTLS
    <- 220 Вперед
    Информация о сертификате TLS:
    Владелец:
        Общее название: smtp.yandex.ru
        Организация: ООО «Яндекс»
        Организационная единица: ITO
        Местоположение: Москва
        Штат или провинция: Российская Федерация
        Страна: RU
    Эмитент:
        Общее название: Яндекс ЦС
        Организация: ООО «Яндекс»
        Организационное подразделение: Центр сертификации Яндекс.
        Страна: RU
    Срок действия:
        Время активации: Пн, 12 окт 2015, 15:41:24 МСК
        Срок действия: Ср 11 Окт 2017 15:41:24 МСК
    Отпечатки пальцев:
        SHA1: B7: 0E: 62: 55: E1: 3A: C0: F3: 08: 12: 35: B2: 9D: 4B: 25: D0: B8: C1: C6: 39
        MD5: BC: 15: CE: B6: D4: FF: 0D: 95: 4F: E5: 1A: A7: 3A: DF: DA: 65
    -> EHLO localhost
    <- 250-smtp3h.mail.yandex.net
    <- 250-8BITMIME
    <- 250-ТРУБОПРОВОД
    <- 250-РАЗМЕР 42991616
    <- 250-AUTH LOGIN PLAIN XOAUTh3
    <- 250-DSN
    <- 250 УЛУЧШЕННЫХ КОДОВ СТАТУСОВ
    -> AUTH PLAIN AhJvb3ARY29uzMlntS5ydQBXYw5VcMMlazk =
    <- 235 2.7.0 Аутентификация прошла успешно.
    -> ПОЧТА ОТ: 
    -> RCPT TO: 
    -> ДАННЫЕ
    <- 250 2.1.0  нормально
    <- 250 2.1.5  получатель ок
    <- 354 Введите почту, заканчивая "."на отдельной строке
    -> От: [email protected]
    -> Дата: Пн, 6 июня 2016 г. 16:17:00 +0300
    -> тестовое сообщение
    ->.
    <- 250 2.0.0 Ok: поставлен в очередь на smtp3h.mail.yandex.net как 1465219021-86hlZkGCpZ-H0J8ORE2
    -> ВЫЙТИ
    <- 221 2.0.0 Закрытие соединения.  

    Отлично, успех! Письмо ушло, правда, найдем мы его в спаме, так как оно почему-то пустое. Давайте проверим более привычным и "человеческим" способом:

      echo "тестовое сообщение" | mailx -s 'test subject' sugdyzhekov @ plesk.com  

    Вот, теперь в ящике нормальное письмо. Здорово!

    DKIM & SPF

    А еще можно для каждого домена прописать записи DKIM и SPF. Если вы, как я, используете свой DNS-хостинг, то просто скопируйте соответствующие значения из «DNS-редактора» в интерфейсе Яндексекса. Внимание: для каждого домена и алиаса ключ!

    Хост Тип Значение
    mail._domainkey.example.com TXT v = DKIM1; k = rsa; t = s; р = MIGf ...
    mail._domainkey.server1.example.com TXT v = DKIM1; k = rsa; t = s; р = MIGf ...
    mail._domainkey.server2.example.com TXT v = DKIM1; k = rsa; t = s; р = MIGf ...
    mail._domainkey.server3.example.com TXT v = DKIM1; k = rsa; t = s; p = MIGf...

    Отсылаем с сервера письмо и смотрим в заголовки:

      DKIM-подпись: v = 1; а = rsa-sha256; c = расслабленный / расслабленный; d = example.com; s = почта; t = 1467009762;
        bh = Pb6s / Xlf4 ...
    Результаты аутентификации: smtp14.mail.yandex.net; dkim = pass [email protected]  

    Лепота!

    В случае если отправка почты для домена будет происходить только через сервер Яндекс и заранее известные IP-адреса, то можно смело прописать SPF-записи в соответствии с документацией https: // яндекс.ru / support / pdd / Troubleshooting / dns.xml # step2

    Хост Тип Значение
    example.com TXT v = spf1 redirect = _spf.yandex.net
    server1.example.com TXT v = spf1 redirect = _spf.yandex.net
    server2.example.com TXT v = spf1 redirect = _spf.yandex.нетто
    server3.example.com TXT v = spf1 redirect = _spf.yandex.net

    Нюансы

    Скорее всего, вы молодцы, и ваше приложение работает не из под root'а. Попытка послать письмо из-под обычного пользователя опять приведёт к знакомой ошибке в логе msmtp:

      6 июня 14:21:24 server1 msmtp: host = smtp.yandex.ru tls = on auth = on [email protected] [email protected] получатели = sugdyzhekov @ plesk.com smtpstatus = 553 smtpmsg = '553 5.7.1 Адрес отправителя отклонен: не принадлежит пользователю auth.' errormsg = 'конверт с адреса [email protected] не принят сервером' exitcode = EX_DATAERR  

    Можно решить эту проблему по-разному. Например, можно явно указать пользователя, отключив опцию auto_from off в msmtp . Но я уже решил, что меня это не устраивает.

    Правильное решение - алиас для добавления нашего основного адреса:

    Если вам требуется локальный SMTP-релей, то данная конфигурация вам тоже подходит.Нужно просто заменить msmtp на postfix или exim, настроенные на использование сервера Яндекса в smart host'а (гуглить можно, например, по ключевым словам exim smarthost).

    Резюме

    Теперь любой сервер, который я поднимаю для своих задачек, сразу же получает настроенный канал отправки почты. В DNS и pdd.yandex.ru я заранее прописал несколько поддоменов про запас. Так как сервер я разворачиваю через SaltStack, на конфигурацию msmtp мои сервера получают автоматически.

    Что я получил в итоге:

    1. Самое главное - нет заморочек с черными списками и IP-адресами серверов, так как письма уходят через сервер Яндекса
    2. DKIM / SPF "из коробки" - письма не попадают в спам
    3. msmtp простой SMTP-клиент, которому даже в памяти сервера висеть не нужно - запускается по необходимости
    4. msmtp - простейшая настройка в отличие от постфикса "взрослых", exim
    5. можно не беспокоиться о ПТР-быстх для ваших IP-адресов точки зрения почтовой системы.

    Надеюсь эта инструкция кому-нибудь пригодится. Буду рад узнать из комментариев, кто и как решает подобную проблему.

.

Postfix | Русскоязычная документация по Ubuntu

Постфикс

Postfix является агентом передачи почты (MTA) в Ubuntu по умолчанию. Он разработан в соответствии с безопасным протоколом. Он согласован с MTA sendmail . Этот раздел содержит как установить и настроить postfix. Здесь также разъясняется как сделать его сервером SMTP , использующим безопасные передачи сообщений.

Это руководство не рассматривает настройку виртуальных доменов postfix. Для получения информации по виртуальным доменам и другим расширенным настройкам смотрите Ссылки.

Установка

Для установки postfix 9000 выполните следующую команду:

 sudo apt-get install postfix 

Просто нажимайте ввод когда процесс установки задает вопросы, будет выполнена очень детальная настройка на следующем этапе.

Базовая настройка

Для настройки postfix выполните следующую команду:

 sudo dpkg-переконфигурировать postfix 

Будет запущен пользовательский интерфейс.На каждой странице выбирайте следующие значения:

  1. mail.example.com , localhost.localdomain, localhost

  2. 127.0.0.0/8 [::ffff:127.0.0.0 impression/104 [:: 1] / 128 192.168.0.0/16

Замените mail.example.com на домен, для которого вы настраиваете email, 192.168.0.0 / 24 на актуальную подсеть и маску для вашего почтового сервера и steve на соответствующее имя пользователя.

Теперь самое время решить какой формат почтового ящика вы хотите использовать. По умолчанию постфикс использует формат mbox . Вместо прямого редактирования файла конфигурации использовать команду postconf для настроек postfix. Параметры будут сохранены в файле / etc / postfix / main.ср. В случае если вы решите переконфигурировать отдельные параметры вы можете запустить программу, так и вручную поправить файл.

Для настройки формата почтового ящика для Maildir :

 sudo postconf -e 'home_mailbox = Maildir /' 

Это поместит новую почту в / home / username / Maildir, чтобы вам потребовать вашего агента доставки почты (MDA) на использование этого же каталога.

Аутентификация SMTP

SMTP -AUTH позволяет клиенту идентифицировать себя через механизм аутентификации (SASL).Транспортный уровень безопасности (TLS) будет Заявление для шифрования процесса аутентификации. После аутентификации SMTP сервер позволит клиенту почту.

1. Настройте Postfix на SMTP -AUTH с использованием SASL (Dovecot SASL):

 sudo postconf -e 'smtpd_sasl_type = голубятня'
sudo postconf -e 'smtpd_sasl_path = private / auth-client'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = \
allow_sasl_authenticated, permission_mynetworks, reject_unauth_destination '

Настройка smtpd_sasl_path является путем относительного к каталогу запросов Postfix.

2. Далее создайте или получите цифровой сертификат для TLS. Смотрите подробности в разделе Сертификаты. Этот пример также использует Центр сертификации (CA). Для создания информации по созданию сертификатов CA смотрите раздел Центр сертификации.

Почтовым агентам пользователей (MUA), подключающимся к вашему почтовому серверу через TLS, потребуется распознать сертификат, использовать для TLS. Это может быть сделано либо с использованием сертификата от коммерческого центра сертификации, либо с использованием самоподписанного сертификата, который пользователь вручную установил.Для TLS между MTA (почтовыми агентами передачи) сертификаты никогда не подтверждаются без дополнительных соглашений с контролируемыми организациями. Поэтому для таких соединений не требуются локальные политики, если нет резона не использовать самоподписанные сертификаты. Смотрите подробности в разделе Создание самоподписанного сертификата.

3. Как только у вас появился сертификат, настройте Postfix на использование шифрования TLS как для входящей, так и для исходящей почты:

 sudo postconf -e 'smtp_tls_security_level = может'
sudo postconf -e 'smtpd_tls_security_level = может'
sudo postconf -e 'smtp_tls_note_starttls_offer = да'
sudo postconf -e 'smtpd_tls_key_file = / etc / ssl / private / server.ключ '
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'myhostname = mail.example.com' 

4. Если вы используете собственный Центр сертификации , для подписи сертификата введите:

 sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem' 

Опять же, для подробностей смотрите раздел Сертификаты.

После выполнения всех команд Postfix настроен на SMTP - АВТО и самоподписанный сертификат создан для TLS шифрования.

Начальная настройка postfix закончена. Выполните следующую команду для перезапуска сервиса postfix:

 sudo /etc/init.d/postfix перезапуск 

Postfix поддерживает SMTP -AUTH как описано в RFC2554. Он основан на SASL. Однако все-таки необходимо настроить аутентификацию перед тем, как вы использовать SMTP -AUTH.

Настройка SASL

Postfix поддерживает две реализации SASL: Cyrus SASL и Dovecot SASL .Чтобы разрешить Dovecot SASL , требуется установить пакет dovecot-common . Для этого из терминала введите следующее:

 sudo apt-get install dovecot-common 

Далее вам потребуется отредактировать /etc/dovecot/dovecot.conf. В auth default снимите комментарий секции опции socket listen и измените ее следующим образом:

 socket listen {
    #мастер {
      # Главный сокет обеспечивает доступ к информации userdb.Это обычно
      # используется для предоставления локальному агенту доставки Dovecot доступа к userdb, чтобы он
      # может найти расположение почтовых ящиков.
      #path = / var / run / dovecot / auth-master
      #mode = 0600
      # Пользователь / группа по умолчанию - это тот, кто запустил dovecot-auth (root)
      #user =
      # группа =
    #}
    client {
      # Клиентский сокет обычно безопасно экспортировать для всех. Типичное использование
      # - экспортировать его на ваш SMTP-сервер, чтобы он мог выполнять поиск SMTP AUTH
      # используй это.
      путь = / var / spool / postfix / private / auth-client
      mode = 0660
      user = postfix
      группа = постфикс
    }
  } 

Чтобы использовать SMTP -AUTH клиенты Outlook, в секции auth default файла / etc / dovecot / dovecot.conf добавить "логин":

 механизмы = простой логин 

После того, как настроен Dovecot, перезапустите его:

 sudo /etc/init.d/dovecot перезапуск 

Почтовый стек доставки

Другая опция настройки Postfix для SMTP -AUTH использование пакета mail-stack-delivery (ранее он назывался dovecot-postfix). Этот пакет установит Dovecot и настроит Postfix для его совместного использования с SASL аутентификацией и как агента доставки почты (MDA).Пакет также настроит Dovecot для IMAP , IMAPS, POP3 и POP3S.

Вы можете захотеть или не захотеть использовать IMAP , IMAPS, POP3 или POP3S на вашем почтовом сервере. Например, если вы настраиваете свой сервер в качестве почтового шлюза, фильтра спама и вирусов и т.п. В этом случае возможно будет проще использовать вышеприведенные команды для настройки Postfix на SMTP _AUTH.

Чтобы установить пакет, введите в терминале:

 sudo apt-get install mail-stack-delivery 

У вас теперь рабочий почтовый сервер, но существует несколько опций, которые вы, возможно, захотите изменить в дальнейшем.Например, пакет использует сертификат и ключ от пакета ssl-cert, и в рабочей среде, вы должны использовать сертификат и ключ, сгенерированный для хоста. Смотрите радел Сертификаты для дополнительных деталей.

После того, как вы получили заказанный сертификат для сервера, замените следующую опцию в /etc/postfix/main.cf:

 smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key 

Перезапустите Postfix:

 sudo / etc / init.d / postfix restart 

Тестирование

Настройка SMTP -AUTH завершена. Теперь самое время проверить настройки.

Чтобы убедиться, что SMTP -AUTH и TLS работают правильно, выполните следующую команду:

 telnet mail.example.com 25 

После соединения с почтовым сервером postfix введите:

 ehlo mail.example.com 

Если среди других вы увидите следующие строки, все работает замечательно.Введите выйти из для выхода.

 250-STARTTLS
250-AUTH ОБЫЧНЫЙ ВХОД
250-AUTH = ОБЫЧНЫЙ ВХОД
250 8BITMIME 

Решение проблем

Эта секция вызывает несколько общих способов определения проблем.

Отказ от режима chroot

Пакет postfix в Ubuntu по умолчанию устанавливается в окружении chroot из соображений безопасности. Это может также усложнить процесс поиска решения проблем.

Для отключения chroot найдите строку в настройках /etc/postfix/master.cf:

 smtp inet n - - - - smtpd 

И замените на следующее:

 smtp inet n - n - - smtpd 

После этого вам придется перезапустить Postfix для использования новых настроек. Из терминал введите следующее:

 sudo /etc/init.d/postfix перезапуск 
Файлы журналов

Постфикс посылает все сообщения в журнал / var / log / mail.журнал. Однако сообщения об ошибках и предупреждения могут иногда сохраняться в нормальном журнале, поэтому они сохраняются в /var/log/mail.err и /var/log/mail.warn соответственно.

Для просмотра сообщений журнала в режиме реального времени вы можете использовать команду tail -f :

 tail -f /var/log/mail.err 

Количество деталей, записываемых в журнал, может быть увеличено. Ниже приведено несколько опций настройки для увеличения уровня детализации некоторых областей, описанных выше.

1. Для увеличения TLS активности журнала, установка 9 опции smtpd_tls_loglevel значение от 1 до 4.

 sudo postconf -e 'smtpd_tls_loglevel = 4' 

2. Если вы испытываете трудности с отправкой или приемом отдельного домена, вы можете включить его в параметр debug_peer_list .

 sudo postconf -e 'debug_peer_list = проблема.домен' 

3. Вы можете увеличить детализацию любого сервиса Postfix редактированием / etc / postfix / master.cf, добавив -v после создания записи. Для начала изменим запись smtp :

 smtp unix - - - - - smtp -v 

Важно помнить, что после внесения изменений настроек журналирования процессов, Postfix требуется перезапустить для восприятия новой конфигурации:

 sudo /etc/init.d/postfix перезагрузить 

4. Для увеличения количества информации в журнале при поиске проблем с SASL вы можете установить следующие опции в / etc / dovecot / dovecot.conf:

 auth_debug = да
auth_debug_passwords = да 

Как и в случае с Postfix, если вы изменяете настройки Dovecot, требуется перезапустить процесс:

 sudo /etc/init.d/dovecot reload 

Некоторые опции выше могут серьезно увеличить объем информации, передаваемую в файлы журналов. Не забывайте возвращать уровень детализации журналов к нормальному значению после решения проблем. Затем перезапустите соответствующий сервис, чтобы изменения настройки вступили в силу.

Ссылки

Администрирование сервера Postfix может быть очень сложной задачей.В какой-то момент вам может потребоваться обратиться к сообществу Ubuntu для более квалифицированной помощи.

Хорошее место задать вопрос по сопровождению Postfix и влиться в сообщество Ubuntu Server, это IRC канал # ubuntu-server на freenode. Вы также можете отправить сообщение на один из интернет форумов.

Для погружения в информацию по Postfix очень рекомендуется прочитать Книга Postfix.

Наконец сайт Postfix также содержит много информации по всем возможным опциям настройки.

Кроме того, на этой странице Ubuntu Wiki Postfix содержит дополнительную информацию.


.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *