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

Как я могу защитить постфикс, чтобы мой провайдер не блокировал его?

Наш сервер разработки - это система CentOS LAMP для разработки веб-сайтов. Мы хотим, чтобы PHP отправлял электронную почту. Серверу не нужно получать электронную почту или что-то еще, буквально просто отправьте электронное письмо нашим разработчикам.

Я читал о нулевых клиентах и ​​о том, как они могут заходить вместо постфикса, но мне не хотелось использовать что-то не в репозитории. После небольшой игры я получил postfix, чтобы (попробовать) отправить электронную почту, используя настройки, аналогичные тем, которые находятся в Постфикс на нулевом клиенте инструкции к файлу Readme стандартной конфигурации Postfix:

myhostname = localhost.localdomain
myorigin = localdomain
relayhost = $mydomain
inet_interfaces = loopback-only
mydestination =

Как только я настроил его таким образом, я попытался отправить электронное письмо с помощью telnet и увидел следующую ошибку из /var/log/maillog:

Apr 23 19:26:25 devserver postfix/smtp[34437]: 604E95209C3: to=<user@domain.co.uk>, relay=localdomain[82.147.22.3]:25, delay=0.54, delays=0.07/0/0.07/0.41, dsn=5.0.0, status=bounced (host localdomain[82.147.22.3] said: 550-Please turn on SMTP Authentication in your mail client, or login to the 550-IMAP/POP3 server before sending your message.  ourstatic.hostname.isp.co.uk (localhost.localdomain) 550-[123.456.789.0]:54710 is not permitted to relay through this server 550 without authentication. (in reply to RCPT TO command))

Предположительно, наш интернет-провайдер разрешит отправлять электронную почту, но она должна быть аутентифицирована. Означает ли это, что с ними или с сервером, на который мы пытаемся отправить электронное письмо? Я читал о SASL с постфиксом, но не уверен, стоит ли мне идти по этому пути.

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

Обновить

В ответ на некоторые комментарии - я не пытаясь для ретрансляции через своего интернет-провайдера, но когда я использую postifx на сервере разработки, чтобы попытаться отправить электронное письмо, я вижу вышеуказанное, поэтому, по-видимому, интернет-провайдер блокирует его.

Кое-что я забыл добавить, что еще больше смущает меня. Ранее мы использовали WampServer, и на наших машинах был установлен hMailServer, который был настроен только с SMTP. Отправка электронной почты через это (с настройками Windows SMTP в php.ini) работала нормально, и у нас не было проблем с этим сообщением реле. Понятия не имею, в чем разница, теперь мы пытаемся использовать postfix. - Я вижу, что hMailServer действует как SMTP-сервер - именно это я и хочу делать с postfix..

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

Возможно, моя установка неверна в этом постфиксе / мой интернет-провайдер думает, что я пытаюсь использовать их в качестве ретранслятора, когда все, что я хочу сделать, это иметь простую функциональность SMTP через постфикс для отправки электронной почты. Есть еще предложения?

Если вы не настроили postfix с помощью relayhost, скорее всего, вы отправляете сообщения на адреса одного провайдера, а их почтовый сервер видит вас как в своей сети и требует аутентификации, или они захватывают весь трафик на порт 25 и перенаправляют это на их собственный почтовый сервер (что является обычным, но несколько злым ИМХО).

Решение в обоих случаях - установить postfix для использования вашего почтового сервера ISP в качестве ретранслятора с аутентификацией. Такая конфигурация хорошо документирована в руководстве по postfix.

Вам нужен фиксированный IP-адрес, если вы хотите надежно отправлять в Интернет. Вы добьетесь большего успеха, если получите PTR набор записей для возврата DNS-имени вашего почтового сервера. Если вы не можете получить фиксированный IP-адрес, используйте сервер ретрансляции вашего провайдера для отправки электронной почты.

Обычно, если ваш домен example.com тогда ваш почтовый хост будет настроен как smtp.example.com или mail.example.com. Это было бы MX для example.com. Postfix должен быть настроен так, чтобы идентифицировать себя с этим доменным именем, а не localhost.localdomain. localhost.localdomain не будет MX в Интернете, и многие серверы откажутся от электронной почты или сохранят ее как спам.

Вам следует подумать о настройке SPF (Структура политики отправителя) DNS-записи для вашего домена.

Альтернативные подходы: - Вы можете настроить сервер для аутентификации на сервере вашего разработчика. MX и доставить через аутентифицированное соединение.
- Вы можете настроить свой хост как локальный сервер на сайте разработчика MX сервер. Для этого необходимо, чтобы вы могли идентифицировать администратора почты для MX. Скорее всего, они потребуют, чтобы у вас был фиксированный IP-адрес.

Вы пытаетесь настроить почтовый ретранслятор. Следующая конфигурация в /etc/postfix/main.cf должно хватить:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no

# Replace this with your mail server's hostname
myhostname = svc1.int.mtak.nl

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

# Replace this with your mail server's hostname
myorigin = smtp1.int.mtak.nl

# Domains for which local delivery is required, in your case only localhost
mydestination = smtp1.int.mtak.nl, svc1.int.mtak.nl, localhost.int.mtak.nl, localhost

# Host to which to relay mail to. Usually your ISP's SMTP server or your company's SMTP server, contact your administrator for details
relayhost = dc2.int.mtak.nl
# Networks that are allowed to send mail through your mail relay.
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.100.0.0/24 10.100.2.0/24 10.100.4.0/24

После изменения конфигурации перезапустите Postfix, используя /etc/init.d/postfix restart

Я понял, что мой вариант использования был Postfix на автономном интернет-хосте:

Postfix должен работать без изменений на автономной машине с прямым доступом в Интернет.

Я сбросил свой main.cf по умолчанию, попытался отправить электронное письмо через PHP и отслеживал maillog давая мне эту ошибку:

postfix/sendmail[1787]: fatal: chdir /var/spool/postfix: Permission denied

Это сразу напомнило мне о SELinux ...

sudo setsebool -P httpd_can_sendmail 1

И теперь это работает! Большой урок извлечен очень окольными путями. Спасибо за помощь!