Как установить исходящий IP-адрес sendmail?
Существуют десятки руководств, но большинство из них просто говорят вам, что установить, ничего не объясняя, и большинство из них предполагают, что вы используете виртуальную машину и имеете только статический IP-адрес.
Настройка Сервер - это физическая машина под управлением centos 7 с открытым портом 25 в локальной сети и в SElinux с возможностью отправки электронных писем из apache. Я продолжаю получать ошибки тайм-аута, когда пытаюсь отправить исходящие электронные письма. Я тестировал электронные письма Gmail, Yahoo и Godaddy.
Когда я тестировал с nmap --traceroute
и cURL Я вижу, что мои исходящие соединения проходят через динамический IP-адрес, порт 25 которого заблокирован провайдером.
Мне все еще нужно подключаться из локальной сети, потому что ssh и большинство других портов закрыты для внешнего мира. Порт 25, 80, 443 и пара других открыты для внешнего мира. Все, кроме порта 25, похоже, правильно обрабатываются соответствующими приложениями.
Выход ip show
$ ip route show
default via 192.168.1.254 dev enp4s0f0 proto static metric 100
default via 108.223.xxx.222 dev enp4s0f1 proto static metric 101
default via 108.223.xxx.222 dev enp4s0f3 proto static metric 102
108.223.xxx.217 dev enp4s0f1 proto kernel scope link src 108.223.xxx.217 metric 100
108.223.xxx.217 dev enp4s0f3 proto kernel scope link src 108.223.xxx.217 metric 101
108.223.xxx.218 dev enp4s0f1 proto kernel scope link src 108.223.xxx.218 metric 100
108.223.xxx.218 dev enp4s0f3 proto kernel scope link src 108.223.xxx.218 metric 101
108.223.xxx.219 dev enp4s0f1 proto kernel scope link src 108.223.xxx.219 metric 100
108.223.xxx.219 dev enp4s0f3 proto kernel scope link src 108.223.xxx.219 metric 101
108.223.xxx.220 dev enp4s0f1 proto kernel scope link src 108.223.xxx.220 metric 100
108.223.xxx.220 dev enp4s0f3 proto kernel scope link src 108.223.xxx.220 metric 101
108.223.xxx.221 dev enp4s0f1 proto kernel scope link src 108.223.xxx.221 metric 100
108.223.xxx.221 dev enp4s0f3 proto kernel scope link src 108.223.xxx.221 metric 101
108.223.xxx.222 dev enp4s0f1 proto static scope link metric 100
108.223.xxx.222 dev enp4s0f3 proto static scope link metric 101
192.168.1.0/24 dev enp4s0f0 proto kernel scope link src 192.168.1.71 metric 100
192.168.1.71 dev enp4s0f3 proto kernel scope link src 192.168.1.71 metric 100
Ошибки из почтового журнала
Dec 16 18:14:53 localhost sendmail[77855]: vBGNErI1077873: to=myemail@gmail.com, ctladdr=cdata (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30014, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (vBGNErDq077874 Message accepted for delivery)
Dec 16 18:24:12 localhost sendmail[77855]: vBGGdu99077513: to=<myemail@gmail.com>, ctladdr=<myuser@mydomain.us> (1000/1000), delay=06:44:16, xdelay=00:10:00, mailer=esmtp, pri=750469, relay=alt4.gmail-smtp-in.l.google.com. [108.177.15.26], dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Dec 16 18:24:12 localhost sendmail[77855]: vBGGAGt4077433: to=<myemail@gmail.com>, ctladdr=<myuser@mydomain.us> (1000/1000), delay=07:13:56, xdelay=00:00:00, mailer=esmtp, pri=840469, relay=alt4.gmail-smtp-in.l.google.com., dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Dec 16 18:24:12 localhost sendmail[77855]: vBGFweLX077340: to=<myemail@gmail.com>, ctladdr=<myuser@mydomain.us> (1000/1000), delay=07:25:32, xdelay=00:00:00, mailer=esmtp, pri=930469, relay=alt4.gmail-smtp-in.l.google.com., dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Выход netstat -tuplen | grep 25
чтобы проверить, что порт 25 открыт
$ sudo netstat -tuplen | grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 93443 10849/sendmail: acc
РЕДАКТИРОВАТЬ: ответ, что это помечено как дубликат разговоров о ретрансляции электронной почты Gmail. Не думаю, что я об этом прошу. Я пытаюсь создать электронное письмо с моего сервера, на моем домене и IP-адресе и отправить его на удаленный почтовый сервер. Я прочитал этот ответ и попытался понять, но не думаю, что это связано. Если да, объясните, пожалуйста, как это связано.
ИЗМЕНИТЬ ПОСЛЕ ПРИНЯТИЯ ОТВЕТА. Ответ на CentOS 6.2 sendmail: как контролировать IP-номер, используемый при ретрансляции почты на mx.google.com на самом деле это правильный ответ, но я бы никогда не признал его таковым, потому что не думал, что пересылаю электронное письмо. Спасибо всем за то, что помогли мне это сделать.
Посмотри на https://www.unix-ninja.com/p/Changing_the_Source_IP_Address_in_Sendmail и обязательно следуйте формату, вам нужен обратный апостроф перед Family
(он не отображается в вашем комментарии, может быть, вы его забыли?). По опыту это помогает dnl
в конце инструкции, попробуйте что-нибудь вроде этого:
CLIENT_OPTIONS(`Family=inet, Address=203.0.113.2')dnl
просто замените IP-адрес на один, подключенный к вашему серверу (и убедитесь, что нет брандмауэра, прерывающего исходящее соединение с этого IP-адреса).
Затем:
make
в соответствующем каталоге, например /etc/mail
После того, как make вы можете визуально изучить файл .cf, вы должны увидеть в нем свой IP, показывая, что CLIENT_OPTIONS
было должным образом учтено.
Что касается того, где его разместить, это действительно может быть актуально, ваши файлы могут быть уже задокументированы, иначе вам нужно будет показать больше ваших текущих .mc
файлы.