Назад | Перейти на главную страницу

Можно ли изменить postfix message-id?

Можно ли изменить идентификатор сообщения в постфиксе? Если я отправляю письма через 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 метод

  1. почему ты хочешь сделать это? Как отметил @BenPilbrow, идентификатор сообщения почти бессмысленен. Практически единственное, что будет использовать его, - это почтовый клиент многопоточности.

  2. Как отметил @stew, вы можете просто отправить электронное письмо с правильным идентификатором сообщения.

  3. Наконец, постфиксное решение состоит в том, чтобы изменить значение $myhostname, так как это то, что postfix использует после символа @ при создании идентификаторов сообщений.

Соответствующее свойство java: mail.host. В зависимости от вашего приложения у вас может быть файл свойств, в котором вы установите его следующим образом:

mail.host=your.tld

в качестве альтернативы используя параметр командной строки -D:

java -Dmail.host=your.tld ...

Как отмечали другие, часть домена в идентификаторе сообщения почти на 100% не имеет значения - за исключением случая спама. У меня была аналогичная проблема, когда сообщения, отправленные через mail программа была доставлена ​​немедленно, но те, которые были отправлены через javamail, в котором TLD не указывались в идентификаторе сообщения, получили только отложенную доставку. Проблема была устранена путем добавления полного TLD к идентификатору сообщения.