я настроил Отправить почту
прослушивать порт 1234, а не 25 с одним изменением на sendmail.mc
:
DAEMON_OPTIONS(`Порт=1234, Имя=MTA')
Обычно это работает, за одним исключением. Предыстория заключается в том, что у меня есть реле, прослушивающее порт 25 (реле должно иметь запись MX, поэтому оно должно быть на порту 25). Ретранслятор отправляет почту через sendmail, поэтому sendmail слушает локальный: 1234
. Другими словами, sendmail отвечает только за отправку писем, а не за их получение. нетстат
/etc подтверждает, что relay прослушивает 25, а sendmail прослушивает 1234.
Это работает в этих двух тестовых случаях:
- Я могу отправлять электронные письма по телнету на sendmail (
телнет локальный хост 1234
)
- Я могу отправлять письма с
s-гвоздь
с соответствующим изменением конфигурации (установить mta=smtp://localhost:1234
)
Однако эта установка не работать, если я запускаю sendmail напрямую:
sendmail -d8.20 -vt < test-email.txt
В этом случае sendmail пытается отправить почту, подключившись к порту 25 локально, поэтому он фактически взаимодействует с локальным ретранслятором, а не с удаленным SMTP-сервером. Вывод отладки показывает:
[email protected]... Подключение к [127.0.0.1] через реле...
220 mydomain.org ESMTP реле моего домена
Это поставило меня в тупик - есть идеи, что здесь происходит?
РЕДАКТИРОВАТЬ
Некоторый прогресс. У меня Sendmail 8.15.2, Ubuntu 20.04.Эта проблема на самом деле не имеет значения, за исключением того, что sendmail очищает свои очереди MSP с помощью задания cron, которое запускается каждые 20 минут, поэтому я получаю много записей об ошибках системного журнала и большие очереди недоставленной электронной почты, потому что sendmail не может найти себя.
Проблема выглядит следующим образом. Когда вы отправляете почту (или управляете очередями) с помощью sendmail, это (обычно) двухэтапный процесс. Вы запускаете sendmail, который читает отправить.cf
(и нет sendmail.cf
) и действует как MSA, отправляя почту во что-то. Обычно этим чем-то является локальный демон sendmail, который читает sendmail.cf
когда он набирает статистику.
sendmail.cf
сообщает sendmail, что ему нужно слушать локальный: 1234
для входящей почты. Это означает, что отправить.cf
должен содержать конфигурацию, которая указывает программе sendmail направлять исходящие письма на локальный: 1234
.
Подходящий отправить.mc
конфиг наверное ОСОБЕННОСТЬ
мсп
, который по умолчанию равен
ФУНКЦИЯ(`msp', `[127.0.0.1]', `25')
Так что ответ, вероятно, так же прост, как изменить 25 на 1234. Однако это не так просто. Просто изменить его, перегенерировать файлы и перезапустить sendmail не имеет значения. На самом деле регенерация отправить.cf
либо с м4
или же делать
либо имеет ровно нулевое значение, либо дает вам ср
файл с закомментированной функцией. Где-то есть какое-то волшебство, позволяющее изменить функцию, но я понятия не имею, что именно. Ответ может быть в /usr/share/sendmail/cf/feature/msp.m4, но я его не вижу.