Я использую sendmail для отправки очень простого электронного письма из текстового файла. Вот текстовый файл:
to:test@someaddress.com
from:admin@hostname.tld
subject:Testing
test test test
Который я отправляю с:
sendmail -t < mail.txt
Сервер, с которого я запускаю sendmail, называется hostname.tld. Вот / etc / hosts:
12.34.56.78 hostname hostname.tld
127.0.0.1 localhost
Где hostname.tld - это fqdn сервера, а 12.34.56.78 - публичный IP-адрес сервера. / etc / hostname просто содержит hostname.tld
Когда я получаю письмо, я получаю такой заголовок:
Received: from hostname.tld (hostname.tld [127.0.0.1])
Я не хочу 127.0.0.1, я хочу, чтобы там был публичный IP, но я не могу заставить sendmail его использовать, что бы я ни делал. Я также отредактировал /etc/mail/sendmail.mc, добавив в него строку:
define(`confDOMAIN_NAME', `hostname.tld')dnl
Но ничего не делает.
Я прочитал так много тем, в которых у людей есть похожая проблема, но, похоже, ничего не решает ее. Что я могу сделать?
Это было моим решением:
/ etc / hosts:
12.34.56.78 hostname.tld
127.0.0.1 localhost
/etc/mail/submit.mc:
FEATURE(`msp', `[12.34.56.78]', `25')dnl
(изначально у него было 127.0.0.1 вместо моего публичного IP)
/etc/mail/sendmail.mc:
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=12.34.56.78')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=12.34.56.78')dnl
(обе эти строки изначально имели 127.0.0.1, при его изменении sendmail будет прослушивать ваш публичный IP-адрес вместо localhost).
Выполните команду:
make -C /etc/mail
Перезагрузить sendmail:
service sendmail reload
После отправки моего тестового письма с:
sendmail -t < mail.txt
Заголовок, который мне сейчас не понравился, говорит:
Received: from hostname.tld (hostname.tld [12.34.56.78])
И нигде в заголовках нет упоминания о localhost или 127.0.0.1
Когда вы отправляете электронное письмо с помощью сценария на локальном компьютере, оно является получено от localhost. Публичный IP будет показан в следующем Received:
-линия.