Можно ли изменить идентификатор сообщения в постфиксе? Если я отправляю письма через Java-приложение, я получаю следующий идентификатор сообщения:
message-id=<143303043.111334605578921.JavaMail.applicationanme@hostname>
Итак, я хочу, чтобы идентификатор сообщения выглядел так:
message-id=<143303043.111334605578921.JavaMail.applicationanme@domain.tld>
Что я могу понять, если отправляю почту с помощью программы Linux mail
оно работает:
message-id=<10213429251967.C2D74C1A8D@domain.tld>
Я уже установил свое имя хоста в postfix-conf, но когда я отправляю письмо с помощью java-приложения, оно не работает. Мы используем ретранслятор для отправки электронной почты и любых сообщений, отправленных без @domain.tld
в почтовом идентификаторе будет определяться как спам.
Ты хоть представляешь, как я могу это исправить?
Поскольку никто не дал вам решения о том, как иметь постфикс вставьте идентификатор сообщения, который отражает ваш домен, и у меня была такая же проблема, я подумал, что поделюсь, как мне удалось сделать это с помощью postfix:
1) Добавить в конец /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
2) Вставьте заменяющую строку в header_checks
/Message-Id:\s+<(.*?)@hostname>/ REPLACE Message-Id: <$1...@domain.tld>
3) Запускаем postmap
postmap /etc/postfix/header_checks
4) перезапустить постфикс
service postfix restart
Вместо того, чтобы пытаться переписать идентификатор сообщения в postfix, почему бы просто не заставить javamail с самого начала сгенерировать правильный MessageID. Вы можете изменить способ генерации идентификатора сообщения javamail путем создания подкласса MimeMessage
и предоставив новый updateMessageID
метод
почему ты хочешь сделать это? Как отметил @BenPilbrow, идентификатор сообщения почти бессмысленен. Практически единственное, что будет использовать его, - это почтовый клиент многопоточности.
Как отметил @stew, вы можете просто отправить электронное письмо с правильным идентификатором сообщения.
Наконец, постфиксное решение состоит в том, чтобы изменить значение $myhostname, так как это то, что postfix использует после символа @ при создании идентификаторов сообщений.
Соответствующее свойство java: mail.host
. В зависимости от вашего приложения у вас может быть файл свойств, в котором вы установите его следующим образом:
mail.host=your.tld
в качестве альтернативы используя параметр командной строки -D:
java -Dmail.host=your.tld ...
Как отмечали другие, часть домена в идентификаторе сообщения почти на 100% не имеет значения - за исключением случая спама. У меня была аналогичная проблема, когда сообщения, отправленные через mail
программа была доставлена немедленно, но те, которые были отправлены через javamail, в котором TLD не указывались в идентификаторе сообщения, получили только отложенную доставку. Проблема была устранена путем добавления полного TLD к идентификатору сообщения.