Два наболевших вопроса про exim

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
narian
рядовой
Сообщения: 10
Зарегистрирован: 2008-01-07 7:01:05
Откуда: Владивосток
Контактная информация:

Два наболевших вопроса про exim

Непрочитанное сообщение narian » 2008-01-07 7:38:00

1. Замена заголовка From во всей исходящей почте.
На данный момент exim у меня сконфигурирован так, чтобы требовать аутентификацию даже у всех пользователей, даже при локальной доставке. В данный момент конфигурация позволяет аутентифицированному пользователю, заменив поле From в своем MUA отправить письмо как от другого пользоваля. Видно это будет только в логах. Поэтому, хотел бы, чтобы во всех исходящих письмах заголовок From генерировался exim-ом при отправлении письма (наподобие как это реализованно на gmail.com). Подскажите, пожалуйста, в какую сторону копать.

2. Некий acl.
Я заставляю пользователей аутентифицироваться даже для осуществления локальной доставки с помощью следующего акла:
.ifdef LOCAL_USERS_MUST_AUTH
deny message = "Even local users must authenticate!"
hosts = *:!+relay_from_hosts
!authenticated = *
condition = ${if match_domain{$sender_address_domain}{+local_domains} {yes}{no} }
.endif
Но, так как $sender_address_domain берется из From, то возможна ситуация, когда любой человек, указав у себя в mua мой smtp сервер и from с доменом не в +local_domains, сможет доставить письмо без аутентификации любому локальному пользователю. во первых, тут не будет работать фильтрация спама по dnsbl, во-вторых этот инцидент плохо заметен в логах. Неприятно, в общем. Есть ли способ составить акл по следующему алгоритму (или может у кого-то есть уже готовое решение):
проверить заголовок Recieved письма - и, если письмо получено *только* нашим сервером от сервера не из +relay_from_domains или +relay_hosts, но, в тоже время, $sender_address_domain не из +local_domains, то посылать его лесом. есть ли какие-то подводные камни у данного решения. я, на первый взляд, их не вижу.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение Alex Keda » 2008-01-07 13:30:24

про второе - непонял, про первое - ищи по форуму - Дикенс приводил кондишен для проверки соответствия From и данных из аутентификации.
Может даже в прилепленной теме было...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение dikens3 » 2008-01-07 13:31:56

1. Замена заголовка From во всей исходящей почте.
На данный момент exim у меня сконфигурирован так, чтобы требовать аутентификацию даже у всех пользователей, даже при локальной доставке. В данный момент конфигурация позволяет аутентифицированному пользователю, заменив поле From в своем MUA отправить письмо как от другого пользоваля. Видно это будет только в логах. Поэтому, хотел бы, чтобы во всех исходящих письмах заголовок From генерировался exim-ом при отправлении письма (наподобие как это реализованно на gmail.com). Подскажите, пожалуйста, в какую сторону копать.
http://forum.lissyara.su/viewtopic.php?f=20&t=3577
2. Некий acl.
hosts = *:!+relay_from_hosts
Здесь определена своя сеть?

Как сделал я:
1. Отправка писем куда угодно для моей сети (192.168.x.x) только по TLS и только по логину и паролю.
2. Поле From должно быть login@МОЙ_ДОМЕН
Т.е. я проверяю чтобы FROM соответствовало данным аутентификации. :-)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

narian
рядовой
Сообщения: 10
Зарегистрирован: 2008-01-07 7:01:05
Откуда: Владивосток
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение narian » 2008-01-07 13:43:07

Здесь определена своя сеть?
нет, relay_from_hosts у меня пустой. соответсвенно аутентифицироваться обязаны все, кто указывает свой адрес в одном из моих доменов. попробую вариант проверки from, указанный здесь http://forum.lissyara.su/viewtopic.php?f=20&t=3577
Правда формирование заголовка from exim-ом при отправке все равно предпочтительнее - у меня почтовые учетные записи в организации выдаются по должностям (к примеру, director, topoper, sovetnik) и при смене человека на должности необходимо идти перенастраивать ему mua, чтобы вбить новые ф.и.о. Если бы заголовок From формировался exim-ом все было бы гораздо проще - поменял в базе и готово.

насчет второго пункта - наверное правильнее будет писать соответсвующее правило для спамассасина.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение dikens3 » 2008-01-07 15:45:12

Если бы заголовок From формировался exim-ом все было бы гораздо проще - поменял в базе и готово.
From - это часть заголовка, тогда почитай про то, как их удалять и создавать.

headers_remove:
http://forum.lissyara.su/viewtopic.php? ... it=routers

headers_add:
http://forum.lissyara.su/viewtopic.php? ... add#p17480

Ну и в доках по роутерам и транспортам.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

narian
рядовой
Сообщения: 10
Зарегистрирован: 2008-01-07 7:01:05
Откуда: Владивосток
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение narian » 2008-01-08 9:41:43

narian писал(а): попробую вариант проверки from, указанный здесь http://forum.lissyara.su/viewtopic.php?f=20&t=3577
попробовал. пока остановился на этом варианте.

Код: Выделить всё

.ifdef CHECK_LOCAL_FROMHEADER
  deny
    message = "your login $authenticated_id is not allowed to send mail from address $sender_address"
    authenticated = *
    condition     = ${if !match_address{$sender_address}{$authenticated_id}{yes}{no}}
.endif
Последний раз редактировалось narian 2008-01-08 13:05:21, всего редактировалось 1 раз.

narian
рядовой
Сообщения: 10
Зарегистрирован: 2008-01-07 7:01:05
Откуда: Владивосток
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение narian » 2008-01-08 13:04:37

С заменой From разобрался частично - заголовок вида From: Имя_пользователя <адрес_пользователя> добавляю. Имя и адрес беру из базы mysql, но пока не разобрался как сделать миме-кодирование заголовка, соответственно, если имя пользователя в базе записано кирилицей, то оно получается нечитаемо. Так что пока есть только такой вариант транспорта:

Код: Выделить всё

    mysql_localdelivery:
        driver = appendfile
        check_string = ""
        create_directory
        delivery_date_add
        directory = ${lookup mysql{SELECT CONCAT(home, "/", id, "@", mbox_host) FROM users \
                                    WHERE id='${local_part}' AND mbox_host='${domain}'}}
        directory_mode = 770
        envelope_to_add
        group = dovecot
        maildir_format
        maildir_tag = ,S=$message_size
        message_prefix = ""
        message_suffix = ""
        mode = 0660
        quota = ${lookup mysql{SELECT quota FROM users \
                    WHERE id='${local_part}' AND mbox_host='${domain}'}{${value}M}}
        quota_size_regex = S=(\d+)$
        quota_warn_threshold = 75%
        return_path_add
        headers_add = From: ${lookup mysql{SELECT CONCAT(`realname`, ' <', `id`,'@', `mbox_host`,'>') FROM users WHERE ( id='${local_part:$authenticated_id}' and mbox_host='${domain:$authenticated_id}'  ) }}

leopold
проходил мимо
Сообщения: 2
Зарегистрирован: 2008-04-05 13:17:01

Re: Два наболевших вопроса про exim

Непрочитанное сообщение leopold » 2008-04-05 13:35:41

Два дня туплю... Куда это пихать?

deny
message = "your login $authenticated_id is not allowed to send mail from address $sender_address"
authenticated = *
condition = ${if !match_address{$sender_address}{$authenticated_id}{yes}{no}}

narian
рядовой
Сообщения: 10
Зарегистрирован: 2008-01-07 7:01:05
Откуда: Владивосток
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение narian » 2008-04-06 12:45:40

В секцию acl_check_rcpt

UST
проходил мимо

Re: Два наболевших вопроса про exim

Непрочитанное сообщение UST » 2008-04-06 18:38:57

А вот не работает. Переменная $authenticated_id почему-то остается пустой, соотв. не пропускаются ваще никакие письма.

leopold
проходил мимо
Сообщения: 2
Зарегистрирован: 2008-04-05 13:17:01

Re: Два наболевших вопроса про exim

Непрочитанное сообщение leopold » 2008-04-07 11:52:54

где $authenticated_id присваивается значение? Почему она пустая?

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Два наболевших вопроса про exim

Непрочитанное сообщение dikens3 » 2008-04-07 13:57:42

leopold писал(а):где $authenticated_id присваивается значение?
Тут:

Код: Выделить всё

auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{MYSQL_AUTH_PLAIN}{yes}{no}}
  server_prompts = :
  server_set_id = $2
leopold писал(а):Почему она пустая?
Может быть у тебя без аутентификации работает отправка писем? К примеру, только для своей сети?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.