Использование порта 587 с sendmail

Вопрос или проблема

Я использовал sendmail для отправки писем с использованием доступного внутреннего почтового сервера. Но в настоящее время порт 25 заблокирован по соображениям безопасности.

Я хочу узнать, есть ли способ указать номер порта в утилите sendmail. Я пытаюсь использовать защищённый SMTP-MSA порт 587 в качестве альтернативы, предположив, что я смогу открыть этот порт.

Я не смог найти ничего в мануалах по sendmail. Есть ли какая-либо альтернатива, которая могла бы это сделать?

Если не указано иное, почта будет отправляться через порт 25.

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

Например, когда я настраиваю sendmail для прослушивания порта 587, он обычно принимает входящие письма через этот порт только после аутентификации пользователя.

 DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')

Большинство сетей, которые ограничивают входящий и/или исходящий SMTP-трафик (хорошая и распространённая практика как для потребительских ISP, так и для корпоративных сетей для предотвращения открытых почтовых ретрансляторов, спама и других злоупотреблений), предоставляют серверы ретрансляции, которые позволяют вам отправлять почту, но не без ограничений. Серверы ретрансляции могут проверять содержимое (вирусы, спам) или применять политики (добавление стандартного отказа, архивирование сообщений для соблюдения норм, ограничение получателей) и т.д.

Если вам предоставлен сервер ретрансляции; в sendmail это называется смарт-хостом и настраивается в

# sendmail.mc
define(`SMART_HOST',`relay.example.com`)dnl

Если ваш сервер ретрансляции прослушивает порт 587, это будет выглядеть так:

# sendmail.mc
define(`SMART_HOST',`relay.example.com')dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl

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

Вы можете уточнить маршрутизацию почты с помощью mailertable.


Чтобы направить некоторые домены электронной почты на один удалённый TCP порт, а почту для других доменов на другой, необходимо внести некоторые изменения в sendmail.cf для настройки нового почтового маршрутизатора. Скопируйте настройки существующего esmtp маршрутизатора и добавьте номер порта:

  # sendmail.cf
  # <snip>
  Mesmtp587,         P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
                  T=DNS/RFC822/SMTP,
                  A=TCP $h 587
  Mesmtp2525,         P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
                  T=DNS/RFC822/SMTP,
                  A=TCP $h 2525

Транспортный канал esmtp587 теперь будет доставлять на порт 587 вместо порта 25 или аналогично на 2525 или любой другой альтернативный порт, который вы укажете.

Затем в вашем mailertable:

 example.com    esmtp587:example.com
 example2.com   esmtp2525:example2.com

Строка выше позволит sendmail искать MX записи для example.com; если только один (ретранслятор) SMTP сервер для example.com поддерживает нестандартный порт, синтаксис станет:

 example.com   esmtp587:[smtp.example.com]

Квадратные скобки говорят sendmail игнорировать возможные MX записи для smtp.example.com и маршрутизировать всю почту для @example.com на smtp.example.com:587.

Записи файла sendmail.mc:

dnl   Измените ретрансляционный почтовый маршрутизатор, чтобы он подключался к порту 587 вместо 25
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
dnl   Определите ретрансляцию для не локальных писем
dnl   Используйте [] для отключения поиска MX записей
define(`SMART_HOST', `relay:[name.of.smart.host]')dnl

Sendmail FAQ 3.39 : Как отправить с помощью альтернативного порта?

П.С. Вы можете использовать FEATURE(mailertable), чтобы указать разные ретрансляторы для определённых не локальных доменов электронной почты.

Ответ или решение

Для использования порта 587 с утилитой Sendmail необходимо внести изменения в конфигурационные файлы, так как по умолчанию Sendmail использует порт 25 для передачи почты. Порт 587 — это порт для защищенной передачи электронной почты через SMTP (MSA), который часто используется для отправки почты с необходимой аутентификацией.

Шаги для настройки Sendmail для использования порта 587:

  1. Настройка смарт-хоста: Если ваш провайдер или сервер принимает почту на порту 587, можно настроить Sendmail для использования этого порта с помощью смарт-хоста. Для этого откройте файл конфигурации вашего Sendmail, обычно это sendmail.mc, и добавьте следующие строки:

    dnl Определите смарт-хост, который будет использоваться для отправки почты
    define(`SMART_HOST', `relay:[имя.смарт.хоста]')dnl

    Замените имя.смарт.хоста на имя вашего SMTP-сервера.

  2. Изменение параметров реле: Так как мы хотим использовать порт 587, необходимо также изменить параметры реле. Добавьте следующую строку в файл sendmail.mc:

    define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
  3. Обновление конфигурации: После внесения изменений в sendmail.mc, вам нужно скомпилировать его в sendmail.cf. Это можно сделать с помощью следующей команды:

    m4 sendmail.mc > sendmail.cf
  4. Перезапуск Sendmail: Чтобы изменения вступили в силу, перезапустите службу Sendmail:

    systemctl restart sendmail

Пример полной конфигурации в sendmail.mc:

dnl Определение смарт-хоста
define(`SMART_HOST', `relay:[имя.смарт.хоста]')dnl
dnl Изменение параметров реле для подключения к порту 587
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl

Использование mailertable для настройки пересылки по различным доменам:

Если вам нужно отправить почту для разных доменов через разные SMTP-серверы на альтернативных портах, вы можете использовать mailertable. Для этого:

  1. Откройте файл mailertable и добавьте строки для соответствующих доменов. Например:

    пример.com   esmtp587:[smtp.пример.com]
    пример2.com  esmtp2525:[smtp.пример2.com]

    Здесь esmtp587 и esmtp2525 — это ваши определенные методы пересылки, указывающие на порты 587 и 2525 соответственно.

  2. Включите функциональность mailertable в вашем конфигурационном файле sendmail.mc:

    FEATURE(mailertable)dnl

Заключение

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

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

Капча загружается...