Вопрос: Можно ли изменить идентификатор сообщения postfix?


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

Вы знаете, как я могу это исправить?


5
2017-11-29 21:22


Источник


Это идентификатор сообщения. Внутренний идентификатор. NOBODY просматривает идентификатор сообщения, если не отлаживает проблему с электронной почтой. Даже тогда, мы уверены, что, черт возьми, все равно, @hostname или @tld, мы просто заботимся о том, почему возникает проблема, которая заставляет нас смотреть на проклятую уродливую вещь в первую очередь. Почему вас так волнует? - Ben Pilbrow
Поскольку «hostname» - «ihateyouall» или «asskickr», тогда как «domain.tld» - «jesus-loves-you.org», - mailq
Это решение без проблем. - MikeyB


Ответы:


Вместо того, чтобы пытаться переписать идентификатор сообщения в postfix, почему бы просто не создать javamail правильный MessageID с самого начала. Вы можете изменить, как javamail генерирует MessageID путем подкласса MimeMessage и предоставление нового updateMessageID метод


8
2017-11-29 21:43



Или лучше настроить общие (Java) свойства для имени хоста и домена. Postfix имеет абсолютно ничего с идентификаторами сообщений! - mailq
@mailq: Это просто неправда. постфикс делает установите Message-ID в случаях certian, когда он опущен (что часто бывает для системной почты, например, из cron или других системных процессов). - Flimzy
@Flimzy Это неправда. Переменная always_add_missing_headers по умолчанию no, Вы должны установить его явно. И если присутствует Идентификатор сообщения, он не изменит его (так как это не разрешено изменять). Как вы видите, JavaMail уже установил ID. - mailq
@mailq: более внимательно прочитайте описание этой опции. Postfix 2.6 and later add these headers only when clients match the local_header_rewrite_clients parameter setting. Даже с always_add_missing_headers off, Message Message все еще добавляется, когда сообщение соответствует local_header_rewrite_clients (который по умолчанию означает совпадение хостов inet_interfaces). - Flimzy
@mailq: И я никогда не говорил, что postfix перезаписывает Message-ID; Я просто делаю вопрос с вашим заявлением, что "postfix имеет абсолютно ничего с идентификаторами сообщений!«Это утверждение явно ложно. - Flimzy


Поскольку никто не дал вам решения о том, как постфикс вставьте идентификатор сообщения, который отражает ваш домен, и у меня была такая же проблема. Я полагал, что поделился бы тем, как мне удалось создать постфикс:

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

8
2018-05-27 00:39



Хорошая идея! Но можно ли извлечь домен из «От:» поданного? - Maxim


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

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

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


5
2017-11-29 22:22





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

mail.host=your.tld

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

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

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


1
2017-12-09 09:38