Можно ли отправлять почту через Postfix на другой компьютер в той же локальной сети без необходимости ее ретрансляции?
Я думал, что это довольно распространенная ситуация, но я немного пытаюсь заставить это работать самым простым способом, а также я не уверен, делаю ли я это хорошим/рекомендуемым способом.
У меня есть два сервера, которые могут обмениваться данными через локальную сеть (а также оба имеют общедоступные IP-адреса в Интернете). Один управляет Postfix, другой обслуживает некоторые веб-сайты.
Что я хочу сделать, так это иметь возможность отправлять почту (например, письмо с подтверждением и тому подобное) через PHP с хоста веб-сервера. Поскольку это все, что делает эта машина, я не хочу устанавливать там полноценный Postfix, а хочу использовать другой хост для отправки почты.
Что я сделал, так это настроил msmtp на веб-сервере и объявил его IP-адрес в локальной сети как надежный (добавив его в my_networks и т. д. Postfix) на почтовом сервере. Это работает, я могу отправлять почту с этого хоста. Но, как и ожидалось, Postfix действует как ретранслятор для почты, отправленной таким образом, добавляет соответствующий заголовок, комментарий о том, что проверка SPF была пропущена и так далее.
Теперь мне интересно, можно ли это сделать более простым способом, поскольку веб-сервер имеет доступ к почтовому серверу по локальной сети. Можно ли напрямую использовать sendmail на почтовом сервере с веб-сервера? Например, через ssh-канал, используя какого-нибудь непривилегированного пользователя с ключом SSH без пароля? Или через какую-нибудь небольшую программу на почтовом сервере (я не нашел), которая слушает какой-то неоткрытый порт и пересылает входящие данные в sendmail? Чтобы на веб-сервере можно было использовать фиктивный сценарий sendmail, который просто передает данные на адрес локальной сети почтового сервера и указанный порт?
Спасибо за все подсказки :-)
1 ответ
Если вы хотите удалить заголовок «Получено», сделайте это на прокси-сервере:
В /etc/postfix/main.cf:
header_checks = pcre:/etc/postfix/header_checks
В /etc/postfix/header_checks:
/^Received:/ STRIP Remove Received header.
Я не уверен на 100% в том, что говорит ваш заголовок SPF, но попробуйте поместить это в /etc/postfix/header_checks:
/^skipped\ spf\ test:/ STRIP Remove SPF header.
Наконец, запустите эти две команды:
postmap /etc/postfix/header_checks
systemctl restart postfix