И да и нет.
Конечно, можно заставить MTA говорить по SMTP через нестандартный порт, но только если сервер на другом конце этого ожидает . И вы обнаружите, что никто никогда не слушает SMTP на порте 80 - поэтому ваш сервер будет проводить большую часть своего времени, пытаясь общаться с чьим-то Apache. Для обмена сообщениями между серверами (MX) это порт 25, конец истории.
Таким образом, вы не можете просто изменить порт. Вместо того, чтобы напрямую подключаться к почтовым серверам получателей (из записей MX), вашему MTA нужно будет ретранслировать всю почту через определенный сервер, настроенный для приема SMTP через порт 80.
Но делать это относительно легко, до тех пор , пока у вас есть второй сервер, которому разрешено отправлять почту. Установите MTA там (например, OpenSMTPD или Postfix), настройте его на прослушивание порта 80 и доверять IP-адресу вашего "исходного" сервера для ретрансляции. (В качестве альтернативы, вместо белого списка IP-адресов аутентификация по имени пользователя и паролю SMTP была бы даже лучше.)
Вот (непроверенный) пример OpenSMTPD:
table relay-in-ip { "12.34.56.78" }
listen on 0.0.0.0 port 80 tls-require
listen on :: port 80 tls-require
accept from source <relay-in-ip> for any relay
Точно так же для аутентифицированного SMTP:
table relay-in-auth { "someuser"="somepassword" }
listen on 0.0.0.0 port 80 tls-require auth <relay-in-auth> tag AUTHED
listen on :: port 80 tls-require auth <relay-in-auth> tag AUTHED
accept tagged AUTHED from any for any relay
(Обязательно проверьте сервер ретрансляции - было бы Bad ™, если бы он позволял всему Интернету передавать сообщения через. Даже если я не совсем понимаю, почему.)
После того, как вы это настроите, обычно требуется только одна настройка на "исходном" сервере для ретрансляции всей почты - в зависимости от MTA, опция может называться "relay host" или "smarthost", и она почти всегда принимает хост: спецификация порта:
accept for any relay via "tls://relay.example.com:80"
Если требуется аутентификация:
table relay-out-auth { "foo"="someuser:somepassword" }
accept for any relay via "tls+auth://foo@smtp.gmail.com:587" auth <relay-out-auth>