Jump to content
Калькуляторы

Вопрос по exim - добавить заголовки по умолчанию

На сервере настроил exim. Для отправки используется учетная запись auto@domain.ru. В файле /etc/email-addresses добавлена строчка:

root: auto@domain.ru

При отправке тестового сообщения (из под рута) письмо приходит от следующего адресата: "root <auto@domain.ru>".

Я бы хотел, чтобы почта приходила от такого адресата: "Робот <auto@prov.domain.ru>".

В принципе в файле email-addresses можно указать auto@prov.domain.ru, но это не заменит текстовую часть в адресе (то есть отправитель будет по прежнему называться "root", а не "Робот"). А кроме того у меня есть дополнительные хотелки — я хочу в такие письма автоматически добавлять заголовки, то есть изначально в письме должны быть прописаны следующие заголовки:

sender: auto@domain.ru
from: Робот <auto@prov.domain.ru>
reply-to: Робот <auto@prov.domain.ru>
cc: copy@prov.domain.ru

Можно ли это сделать с помощью exim?

И желательно не с помощью правил rewrite (уж очень у них синтаксис сложный, да и нельзя с их помощью добавить несуществующий заголовок), а как шаблон письма по умолчанию.

Share this post


Link to post
Share on other sites

Что-то не выходит каменный цветок.

 

Пробовал добавить заголовки через headers_add — не подходит, в письме тогда получается два заголовка from и почтовик его блокирует.

Пробовал через rewrite, добавил такие правила:

^auto@domain\.ru "=?UTF-8?...?= <auto@prov.domain.ru>" SFfrw
^auto@prov\.domain\.ru "=?UTF-8?...?= <auto@prov.domain.ru>" SFfrw

При тестах (exim -brw auto@domain.ru) вроде бы все правильно, но тестовые письма приходят от "root <auto@domain.ru>".

Share this post


Link to post
Share on other sites

Получилось так:

^.* "=?UTF-8?...?= <auto@prov.domain.ru>" SFfw

Подозреваю, что это криво, но работает.

Share this post


Link to post
Share on other sites

Что-то вообще не могу понять логику rewrite у exim.

Я хочу сделать так, чтобы все исходящие письма автоматически подписывались как "Робот <auto@prov.domain.ru>", за исключением писем, в которых вручную задается заголовок from (например "from: auto+site@prov.domain.ru" не должен изменяться).

Делаю так:

 

В файле /etc/email-addresses есть строчка:

root: auto@prov.domain.ru

В конфигурации есть такой фрагмент:

^<auto@prov.domain.ru>\$ "=?UTF-8?...?= <auto@prov.domain.ru>" SFfwq

Тестирую — заголовок вообще не обрабатывается, письмо подписано как "root <auto@prov.domain.ru>".

В режиме отладки так же ничего не понятно:

root@srv-svc03:/etc/exim4# exim -d -brw auto@prov.domain.ru
Exim version 4.80 uid=0 gid=0 pid=6361 D=fbb95cfd
Berkeley DB: Berkeley DB 5.1.29: (October 25, 2011)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DKIM
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Compiler: GCC [4.7.2]
Library version: GnuTLS: Compile: 2.12.20
                         Runtime: 2.12.20
Library version: PCRE: Compile: 8.30
                       Runtime: 8.30 2012-02-04
Total 13 lookups
WHITELIST_D_MACROS: "OUTGOING"
TRUSTED_CONFIG_LIST: "/etc/exim4/trusted_configs"
changed uid/gid: forcing real = effective
  uid=0 gid=0 pid=6361
  auxiliary group list: <none>
seeking password data for user "uucp": cache not available
getpwnam() succeeded uid=10 gid=10
changed uid/gid: calling tls_validate_require_cipher
  uid=101 gid=103 pid=6362
  auxiliary group list: <none>
tls_validate_require_cipher child 6362 ended: status=0x0
configuration file is /var/lib/exim4/config.autogenerated
log selectors = 00000ffc 00612001
cwd=/etc/exim4 4 args: exim -d -brw auto@prov.domain.ru
trusted user
admin user
changed uid/gid: privilege not needed
  uid=101 gid=103 pid=6361
  auxiliary group list: 103
seeking password data for user "mail": cache not available
getpwnam() succeeded uid=8 gid=8
user name "root" extracted from gecos field "root"
originator: uid=0 gid=0 login=root name=root
address match: subject=auto@prov.domain.ru pattern=*@+local_domains
prov.domain.ru in "@:localhost:server"? no (end of list)
prov.domain.ru in "+local_domains"? no (end of list)
auto@prov.domain.ru in "*@+local_domains"? no (end of list)
address match: subject=auto@prov.domain.ru pattern=*@prov.domain.ru
prov.domain.ru in "prov.domain.ru"? yes (matched "prov.domain.ru")
auto@prov.domain.ru in "*@prov.domain.ru"? yes (matched "*@prov.domain.ru")
search_open: lsearch "/etc/email-addresses"
search_find: file="/etc/email-addresses"
  key="auto" partial=-1 affix=NULL starflags=0
LRU list:
  7/etc/email-addresses
  End
internal_search_find: file="/etc/email-addresses"
  type=lsearch key="auto"
file lookup required for auto
  in /etc/email-addresses
lookup failed
  sender: auto@prov.domain.ru
address match: subject=auto@prov.domain.ru pattern=^<auto@prov.domain.ru>$
auto@prov.domain.ru in "^<auto@prov.domain.ru>$"? no (end of list)
address match: subject=auto@prov.domain.ru pattern=*@+local_domains
prov.domain.ru in "@:localhost:server"? no (end of list)
prov.domain.ru in "+local_domains"? no (end of list)
auto@prov.domain.ru in "*@+local_domains"? no (end of list)
address match: subject=auto@prov.domain.ru pattern=*@prov.domain.ru
prov.domain.ru in "prov.domain.ru"? yes (matched "prov.domain.ru")
auto@prov.domain.ru in "*@prov.domain.ru"? yes (matched "*@prov.domain.ru")
search_open: lsearch "/etc/email-addresses"
  cached open
search_find: file="/etc/email-addresses"
  key="auto" partial=-1 affix=NULL starflags=0
LRU list:
  7/etc/email-addresses
  End
internal_search_find: file="/etc/email-addresses"
  type=lsearch key="auto"
cached data used for lookup of auto
  in /etc/email-addresses
lookup failed
    from: auto@prov.domain.ru
      to: auto@prov.domain.ru
      cc: auto@prov.domain.ru
     bcc: auto@prov.domain.ru
address match: subject=auto@prov.domain.ru pattern=*@+local_domains
prov.domain.ru in "@:localhost:server"? no (end of list)
prov.domain.ru in "+local_domains"? no (end of list)
auto@prov.domain.ru in "*@+local_domains"? no (end of list)
address match: subject=auto@prov.domain.ru pattern=*@prov.domain.ru
prov.domain.ru in "prov.domain.ru"? yes (matched "prov.domain.ru")
auto@prov.domain.ru in "*@prov.domain.ru"? yes (matched "*@prov.domain.ru")
search_open: lsearch "/etc/email-addresses"
  cached open
search_find: file="/etc/email-addresses"
  key="auto" partial=-1 affix=NULL starflags=0
LRU list:
  7/etc/email-addresses
  End
internal_search_find: file="/etc/email-addresses"
  type=lsearch key="auto"
cached data used for lookup of auto
  in /etc/email-addresses
lookup failed
reply-to: auto@prov.domain.ru
address match: subject=auto@prov.domain.ru pattern=^<auto@prov.domain.ru>$
auto@prov.domain.ru in "^<auto@prov.domain.ru>$"? no (end of list)
address match: subject=auto@prov.domain.ru pattern=*@+local_domains
prov.domain.ru in "@:localhost:server"? no (end of list)
prov.domain.ru in "+local_domains"? no (end of list)
auto@prov.domain.ru in "*@+local_domains"? no (end of list)
address match: subject=auto@prov.domain.ru pattern=*@prov.domain.ru
prov.domain.ru in "prov.domain.ru"? yes (matched "prov.domain.ru")
auto@prov.domain.ru in "*@prov.domain.ru"? yes (matched "*@prov.domain.ru")
search_open: lsearch "/etc/email-addresses"
  cached open
search_find: file="/etc/email-addresses"
  key="auto" partial=-1 affix=NULL starflags=0
LRU list:
  7/etc/email-addresses
  End
internal_search_find: file="/etc/email-addresses"
  type=lsearch key="auto"
cached data used for lookup of auto
  in /etc/email-addresses
lookup failed
env-from: auto@prov.domain.ru
  env-to: auto@prov.domain.ru
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=6361 terminating with rc=0 >>>>>>>>>>>>>>>>

В каком виде строка вообще поступает в правило rewrite?

С дописанным доменом из /etc/mailname?

Замененное строкой из /etc/email-addresses?

С дописанным текстом по RFC-2822?

Share this post


Link to post
Share on other sites

Разобрался.

exim явно разрабатывали марсиане, какая-то у него нечеловеческая логика.

Похожие ощущения у меня были, когда я запускал службу на Erlang.

Share this post


Link to post
Share on other sites
28 минут назад, alibek сказал:

exim явно разрабатывали марсиане, какая-то у него нечеловеческая логика.

:-))))

 

Вот именно поэтому первое, что я делаю в дебьяне - меняю ЭТО на (sendmail|postfix).

 

P.S.: А я уж думал, что только у меня такие проблемы.

Share this post


Link to post
Share on other sites

если exim на марсе то тогда sendmail в аду чтоли?

просто exim очень гибкий:) настолько гибкий что на его встроенных аклах умудрялись писать реализацию spf когда нативной еще небыло в нем, а за такое приходица платить.

Share this post


Link to post
Share on other sites

sendmail я использовал лет 15+ назад юным падаваном в режиме "скопировать строку, изменить несколько символов". Поэтому за него ничего сказать не могу, но чем-то непознаваемым его конфиг не выглядел.

Конфиг postfix достаточно логичен и за пару дней в нем вполне можно разобраться.

У exim конфиг слишком самобытен и неочевиден.

Share this post


Link to post
Share on other sites

у меня sendmail жил гдето до начала 2000 годов, потом как его начали активно ломать по 3 раза на неделе пришлось его заменить, но тот ад и израиль с M4 я досих пор помню:)  и "У exim конфиг слишком самобытен и неочевиден." это фигня:) Круче сендмейла у меня только был какой то маршрутизатор NSG, у которого команды были вида буква:цифра 2буквы:цифра, и подробный мануал к нему с етими ка***ми на ~400 страниц:)  Так что не все так плохо.

Share this post


Link to post
Share on other sites
1 час назад, GHhost сказал:

у меня sendmail жил гдето до начала 2000 годов, потом как его начали активно ломать по 3 раза на неделе пришлось его заменить, но тот ад и израиль с M4 я досих пор помню:) 

Ой, да ладно! Всего-то 4-е дыры за 2003-й и две в 2006-м. :-)

 

Кстати, в отличие от exim, уже тогда ставился изначально прилично настроенным. А любителей exim "искаропки" приходилось все время "мордом по гуглу" возить чтобы дыры заткнули.

 

Кстати, а чего не нравится в m4? Конфиг как конфиг.  Со своими заморочками, но достаточно гибкий.

Share this post


Link to post
Share on other sites

на моей памяти этих дыр было значительно больше и их реально эксплуатировали вдобавок, просыпаешся утром а там ой - спам рассылаем или фсе сломали, ну рас сломали 2 сломали 3 сломали скока можно то, даунтаймы стали перевешивать все преимущества, потому и пришлось переехать на exim, в то время еще 3, который казался немного убогим конечно после мощи сендмейла, но зато его никто не ломали:) не уверен точно но это было чуток пораньше 2003 года.

 

В m4 не нравица собсно наличие m4, зачем он нужен? По поводу гибкости тут это бесспорно конечно, sendmail в то время не имел практически равноценных альтернатив в этом плане, поэтому мирились со всеми граблями и дырами, сколько могли.

Share this post


Link to post
Share on other sites
17 минут назад, GHhost сказал:

на моей памяти этих дыр было значительно больше и их реально эксплуатировали вдобавок, просыпаешся утром а там ой - спам рассылаем или фсе сломали, ну рас сломали 2 сломали 3 сломали скока можно то, даунтаймы стали перевешивать все преимущества, потому и пришлось переехать на exim, в то время еще 3, который казался немного убогим конечно после мощи сендмейла, но зато его никто не ломали:) не уверен точно но это было чуток пораньше 2003 года.

Я тут смотрел:

https://www.freebsd.org/security/advisories.html

 

Ну и... Что-то как-то не ломали. :-) Вообще ни разу. Основной почтовый сервак как-раз на сендмыле и вертится. Ну а мелкие MTA - где чего придется.

 

Вот только не помню в каком году у меня сендмыло полезными мильтерами обросло. Может и раньше этих эпических дыр...

Share this post


Link to post
Share on other sites

Повезло тебе может, не имел критической массы и мимо прошло. Мильтерами оно обрастает сразу же, если это нормальный публичный сервис а не какиенить рога с капытами.

 

https://www.freebsd.org/security/advisories.html это явно какаято хрень, https://www.cvedetails.com/vendor/31/Sendmail.html тут кстати тоже почемуто, и они не совпадают, 2000 года вообще нет, но почемуто есть вот к примеру вот это https://www.cvedetails.com/cve/CVE-2000-0319/ за 2000 год, а реально там было все очень плохо одно время. явно не все там учтено у них и у бсдэшников тоже. Сдается мне что на многие дыры они CVE просто не заводили.

Share this post


Link to post
Share on other sites

https://securityvulns.ru/search/news.asp?keyword=sendmail&start=01.03.2000&end=01.03.2018&x=0&y=0

 

Вот. Нашел альтернативный взгляд на реальность от 3apa3a. Как раз его в то время и использовал как оперативный источник.

Share this post


Link to post
Share on other sites

Подскажите, как правильно настроить на exim удостоверение подлинности отправителя?

Почтовая зона у меня обслуживается Gmail, в зоне добавлены записи SPF и DKIM (из гугловской инструкции).

Если отправить письмо через веб-интерфейс или по SMTP на почтовый ящик @yandex.ru, то такое письмо отмечается зеленым замком, Яндекс подтверждает его подлинность (отправитель подтвержден и проверен).

Если отправляю письмо через MTA, то письмо помечается серым значком (отправитель подтвержден, но не проверен).

При этом в обоих письмах есть DKIM-Signature.

Хотелось бы добиться зеленого значка в обоих вариантах.

Я пробовал добавить свой собственный закрытый ключ и отдельный селектор для DKIM, но что-то результата не дало.

Share this post


Link to post
Share on other sites

С такими вводными боюсь без телепатов никак.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this