1)
Чтобы smtpd прослушивал альтернативный порт, вы измените master.cf, скопируйте существующую запись smtpd и просто измените первое поле с smtp
на 587
или любой другой порт, который вы хотите прослушивать. Если вы хотите использовать порт 465, раскомментируйте запись smtps
. Я бы не советовал использовать незашифрованный smtp на этом порту, поскольку это, скорее всего, вызовет путаницу и проблемы с почтовыми клиентами (поскольку 465 обозначен как порт ssl).
Вариант, который вы ищете для включения аутентификации, - это smtpd_sasl_auth_enable = yes
и smtpd_recipient_restrictions = allow_sasl_authenticated
(который у вас уже есть, поэтому вам просто нужно его настроить). Поскольку у вас есть эти настройки в вашем main.cf, они включены для всех портов. Нет причин разрешать их только на портах, отличных от 25. Если почта приходит без аутентификации, она будет принята только для локальной доставки. Если он проходит через аутентификацию, он может пойти куда угодно.
Я не уверен, что вы имеете в виду под «почему у SMTP нет ограничения на отклонение?».
2)
Вы должны использовать SASL для аутентификации. Таким образом, аутентификация обеспечивается внешней службой, с которой общается postfix. Вы по-прежнему можете использовать существующую базу данных MySQL, вам просто нужно настроить службу SASL для ее использования. Cyrus SASL - провайдер по умолчанию в postfix. Подробнее можно прочитать здесь .
3)
У вас уже есть smtpd_recipient_restrictions = permission_mynetworks
и mynetworks = 127.0.0.0/8
, так что все от localhost будет приниматься, включая PHP.
ПРИМЕЧАНИЕ
Я советую посмотреть все варианты, доступные для smtpd_recipient_restrictions
. Просто установите для этого значения, указанные здесь, и ничто другое не может вызвать нежелательное поведение. Я бы прочитал страницу руководства postconf по всем упомянутым мною настройкам, чтобы вы понимали, что они делают, прежде чем реализовывать их.