Назад | Перейти на главную страницу

Настроить Postfix + Dovecot + MySQL для моего случая использования

Я установил Posfix, Dovecot и MySQL на Debian (например, sample.net) и настроил его, чтобы внешние пользователи могли отправлять почту только в этом домене sample.net (используя мой SMTP). Также я настроил, что все письма (например, *@sample.net) пересылаются на один почтовый ящик bulk@sample.net. В основном я следовал этому руководству.

Некоторая моя конфигурация Postfix:

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf

mysql-virtual_forwardings.cf
query = SELECT destination FROM forwardings WHERE source='%s'

Table
| SOURCE | destination |
| @sample.net | bulk@sample.net |

Я разрешил моему SNTP получать только почту для sample.net следующим образом:

transport_maps = proxy:mysql:/etc/postfix/mysql-virtual-transport.cf

mysql-virtual-transport.cf
query = SELECT transport FROM transport WHERE DOMAIN='%s'

Table
| DOMAIN | transport |
| sample.net | : |
| * | error:Only allowing one domain |

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

Совершенно блестящее руководство по настройке почтового сервера с postfix, dovecot и mysql можно найти здесь: https://workaround.org/ispmail/wheezy

Я проработал это дважды, один раз с Debian и упомянутыми там компонентами и один раз с Ubuntu, с немного разными версиями postfix и dovecot и с postgres вместо mysql.

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

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

Имея это в виду, то, чего вы хотите достичь, довольно просто. Вы должны установить mydestination вот так (при условии, что постфиксный сервер находится в sample.net)

mydestination = $myhostname localhost.$mydomain localhost

Устанавливать myhostname к имени хоста сервера что-то вроде mail.sample.net и mydomain к sample.net

Это гарантирует, что "извне" постфикс будет принимать почту только для sample.net, то вы можете настроить псевдоним для перенаправления всей почты на sample.net к bulk@sample.net

Затем вы можете установить mynetworks разрешить пересылку только от себя вот так:

mynetworks = 127.0.0.0/8

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