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

11

У нас есть постфикс на нашем сервере разработки, и я бы хотел, чтобы он мог отправлять почту только на наш домен, а не на другие домены, чтобы внешние пользователи не могли случайно получать почту с нашего сервера разработки.

Я просмотрел документы, попробовал несколько вещей, но все равно отправляю на все домены ...

datadevil
источник

Ответы:

7

Транспортные (5) карты используются для переопределения того, как электронная почта направляется постфиксом.

  • Добавьте следующую строку в /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    
  • Добавьте новый файл / etc / postfix / transport с этим содержимым:

    .example.com   :
    example.com    :
    *              discard:
    

Замените example.comдоменом, на который ваш почтовый сервер должен отправлять почту. Если вас не интересуют субдомены, удалите первую строку.

Не забудьте хешировать файл после редактирования с помощью postmap (1) и перезагрузить postfix, чтобы изменения вступили в силу:

# postmap /etc/postfix/transport && postfix reload
Карло Аренас
источник
7

Вы можете легко ограничить получателей стандартным smtpd_recipient_restrictions или, точнее, check_recipient_access .

Просто создайте таблицу доступа (5)/etc/postfix/access со следующим содержимым ( example.com - это домен, на который вы хотите отправлять почту):

example.com    OK

Вы также можете разрешить только некоторые конкретные адреса:

user1@example.com    OK
user2@example.com    OK

Не забудьте хешировать файл после редактирования с помощью postmap (1) :

# postmap /etc/postfix/access

Теперь поместите следующие ограничения для получателей в ваш main.cf:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

и перезагрузите Postfix:

postfix reload

После этого проверьте, работает ли он .

Joschi
источник
1
Это будет работать для почты, отправленной через SMTP, а не через команду / usr / lib / sendmail, и локальные процессы могут выполнять оба действия. Похоже, что параметр authorized_submit_users может использоваться для блокировки локальной отправки с помощью sendmail / postdrop, тогда ограничений smtpd будет достаточно.
Яцек Конечны
6

Так что, если кто-то спотыкается об этом, как я: ответ действительно - header_checks, и он работает так:

  • Добавьте следующую строку в /etc/postfix/main.cf:

    header_checks = regexp:/etc/postfix/header_checks
    
  • Добавьте новый файл /etc/postfix/header_checksс этим содержанием:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT redirect@example.com
    

Замените allowed-domain.comдоменом, на который ваш почтовый сервер должен отправлять почту. Замените redirect@example.comна адрес электронной почты, все остальные электронные письма должны быть перенаправлены на.

Если вам нужно разрешить несколько доменов, первая строка должна выглядеть так:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

Вместо перенаправления вы можете просто удалить все другие письма. Заменить вторую строку выше:

/^To:.*@/   DISCARD No outgoing mails allowed

Объяснение:

  • Postfix проходит через заголовки почты один за другим.
  • Каждая строка заголовка сопоставляется с header_checksфайлом строка за строкой.
  • Если он соответствует первой строке ( To:содержит разрешенный домен), он переходит к следующей строке заголовка и снова начинает проверку заголовка сверху. Поскольку никакая другая строка не будет соответствовать, это означает, что почта будет доставлена.
  • Если он соответствует второй строке ( To:содержит другой внешний адрес электронной почты), он перенаправляет почту.
Jonas
источник
эта проблема, кажется, была решена с помощью этого ответа, может быть, он должен быть помечен как решенный? (по крайней мере для меня это сработало)
Сверре
а как насчет Cc:а Bcc:?
Пол Тобиас