EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:smile: :( ;-) :roll: :pardon: 8) :x :oops: :shock: :cz2: :-D :ROFL: :Yahoo!: :cry: :Search: :Bravo: :good: :bad: :sorry: :no: :unknown: :evil: :crazy: :"": :fool: :-o :drinks: :st: :bn:
Ещё смайлики…

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ОТКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Развернуть Обзор темы: EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-04-18 16:54:17

Иван Петров писал(а):Источник цитаты Вот цитата из этой страницы:
For rules that are part of the headers_rewrite generic transport option, E, F, T, and S are not permitted.
Я это и сам проверил на практике - действительно, поле конверта FROM (the envelope From field) не меняется в транспорте.
А поменять его можно в rewrite, но это не транспорт, и изменяется From конверта во ВСЕХ письмах, включая локальные.

Это, видимо, потому, что в транспорте можно задавать отправителя через return_path

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-16 17:58:22

globus писал(а):Источник цитаты , как раз поиски во время работы транспорта и не показывает(( Ни headers_rewrite, ни return_path.

При такой строке у вас вообще только поисковые запросы будет показывать

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение globus » 2017-03-15 18:01:03

Угу, так и делал,

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

exim -bd -q1d -d-all+lookup
, как раз поиски во время работы транспорта и не показывает(( Ни headers_rewrite, ни return_path.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-15 17:34:33

globus писал(а):Источник цитаты отрицательная частица "НЕ" в первом предложении перевода

Cлона то я и как-то не приметил
globus писал(а):Источник цитаты Посоветуйте, пож-ста, как дебажить это дело

Смотря что, но в общем случае

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

# service exim stop
# exim -bd -q15m -d+all
...

Вместо +all можете выбирать что именно. Детали см. http://www.exim.org/exim-html-current/d ... _line.html

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение globus » 2017-03-15 16:06:04

А отрицательная частица "НЕ" в первом предложении перевода - разве так и надо? А если так надо, так может и из-за этого и не работает у меня?

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

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-15 14:13:49

Не понимаю, где вы увидели несоответствие. Перевод точный.
Если не работает - дебажьте. Там будет видно как раскрываются переменные и почему у вас это не срабатывает.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение globus » 2017-03-15 14:09:45

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

return_path = ${lookup{$local_part}lsearch{/etc/email-addresses}{$value}fail}
не работает опять-таки...

Кстати, лопатя документацию, обнаружил несоответствие с прямо противоположным переводом. Exim 4.7 $ 31.4:

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

Отметьте, что управляемая поиском перезапись [b][u]НЕ[/u][/b] может быть сделана правилом в форме
*@*   ${lookup ...
где ключ поиска использует “$1” и “$2”, или “$local_part” и “$domain” для ссылки на перезаписываемый адрес.

Exim 4.88 spec.txt:

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

 Note that lookup-driven rewriting can be done by a rule of the form
*@*   ${lookup ...
where the lookup key uses $1 and $2 or $local_part and $domain to refer to the address that is being rewritten.

С английским у меня, конечно, не очень, но тут случай вопиющий)) Куда просигнализировать?

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-15 12:55:05

globus писал(а):Источник цитаты return_path = ${lookup{$1}lsearch{/etc/email-addresses}{$value}fail}

Вероятно, потому, что переменные типа $1 работают только в headers rewrite. Используйте стандартную $local_part.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение globus » 2017-03-15 8:59:19

Почему в транспорте не работает такая конструкция:

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

return_path = ${lookup{$1}lsearch{/etc/email-addresses}{$value}fail}
, а прямая подстановка адреса работает?

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение globus » 2017-03-11 12:50:05

Здравия!
Извините за вмешательство, но надеюсь принести пользу. Взаимовыгодно :-)
Надо же, и у меня та же проблема. Переписывается всё, кроме "Envelope-From", который можно косвенно переписать установкой "Return-Path" в транспорте.
Вот так работает, но только для одного:

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

remote_smtp:
  return_path = ext-user@smarthost.ru
  headers_rewrite = * ${lookup{$1}lsearch{/etc/email-addresses}{$value}fail} frs

Можно ли в транспорте завести переменную, чтобы считывать реквизиты из /etc/email-addresses и потом эту переменную вставлять в return_path и в headers_rewrite? Во избежание многократых чтений файла.
Вот так:

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

RMSMTPHDR=(после $local_part: из /etc/email-addresses)
 headers_rewrite = * $RMSMTPHDR frs
 return_path = $RMSMTPHDR

Формат /etc/email-addresses:

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

local_user: ext-user@smarthost.ru

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-07 11:15:29

Ваша патетика понятна, но вряд ли уместна.
Думаю, что имеет смысл продолжить дискуссию после получения дополнительной информации.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-07 0:38:39

xM писал(а):Источник цитаты Они то правильно делают, а вот вы что-то неправильно, видимо.

А можно узнать, что я делаю неправильно?

Та схема, которую я пытаюсь реализовать, предусмотрена в настройках Exim, наряду с обычным почтовым узлом, и называется smarthost.
Мне кажется, тут проявился эффект разработки студентов - не все продумали, что-то реализовали не лучшим образом.
Во времена, когда проектировали EXIM, считалось что почтовые сервера от своих клиентов должны принимать почту вообще без авторизации.
А теперь времена изменились, приходится защищаться от спама, делать авторизацию и дополнительные проверки.
Казалось бы, что проще - разрешить headers_rewrite для всех полей. Но раз не разрешили, значит что-то мешает. Возможно, внутри программы на эти поля что-то завязано, и их просто так не изменишь - нарушится логика работы других частей.

А я да, неправильно делаю. Я пытаюсь реализовать локальный почтовый сервер. Делай я обычный почтовый сервер или хотя бы с доменной почтой у хостера или мейла/яндекса/гугла, то скорей всего все бы заработало.
Но что еще важно - мне хотелось бы знать, что сделав шаг в сторону, я не наткнусь на неразрешимые проблемы.
Я пытаюсь на личном опыте понять, на что способна почтовая система.
Так что, даже если реальная система будет работать через сервер хостера (а сейчас она именно так работает), я вряд ли стану использовать EXIM после проблем с его настройкой в тестовом варианте. Если конечно, не узнаю, что есть простое и красивое решение, о котором я не знаю.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-06 18:29:06

Иван Петров писал(а):Источник цитаты А mail.ru все делают правильно, защищают почту от подделки адресов.

Они то правильно делают, а вот вы что-то неправильно, видимо.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-06 15:50:14

xM писал(а):Источник цитаты Попробуйте обратиться за советом к техническому директору mail.ru Владимиру Дубровину.

Ого, да это автор 3proxy?! Пользуюсь его программой, очень доволен.
А mail.ru все делают правильно, защищают почту от подделки адресов.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-06 11:49:08

Попробуйте обратиться за советом к техническому директору mail.ru Владимиру Дубровину.
Он отвечает на Хабре и Тостере.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-06 9:59:55

Проверил, должно ли при отправке на smtp.mail.ru поле From письма быть равно полям конверта и аутентификации сессии (про последние уже писал выше).
Должно. В скрипте на Perl указал другой адрес From письма, и вот что получил:

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

550 Message was not accepted -- it contains invalid headers.  More specially, 'From:' header must match user you are sending mail from.  See http://help.mail.ru/mail-help/mailer/popsmtp for details.

По указанной ссылке ничего интересного нет - там указаны адреса серверов и номера портов для настройки почтовых клиентов.

В Postfix с настройкой этих адресов проблем нет. Случайное совпадение, или нет? Кажется, больше программ тоже предпочитают Postfix - сразу вспоминаются Postfix Admin, iRedMail, по Posfix больше материалов в интернет. Случайно ли? Вот, я только начал настраивать Exim, и сразу столкнулся с кажется неразрешимой проблемой. А если бы я попытался реализовать более сложные схемы? Или это фича Exim - трудная настройка и невозможность решения некоторых задач? У меня нет опыта работы с разными MTA, поэтому и спрашиваю.

Стоящую передо мной задачу я описал в прошлых сообщениях.
Если я выберу Postfix, что я потеряю по сравнению с Exim? Какие самые яркие преимущества Exim? Что из важного и нужного он умеет, чего не может Postfix?

Сейчас у меня складывается такое впечатление.
Подход Postfix - у вас проблема? Вот вам опция, которая разрешает именно эту проблему. Другая проблема - вот вам другая опция.
Подход Exim - вот вам куча возможностей, с помощью которых вы наверняка найдете способ решить любую проблему. Проблема не решается? Увы, вам не повезло.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-02 10:20:02

xM писал(а):Источник цитаты Попробуйте error_to в роутере.

Хорошо, спасибо, буду иметь в виду.

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

Опять попробовал Postfix - там все просто, и почта отправляется через mail.ru, и адреса правильные - и локальные, и внешние, и сообщения о ошибках доставки приходят как и положено, локальным пользователям (правда, я пока не пытался сделать что-то действительно нестандартное).

Зачем он такой EXIM нужен (в моем случае), если с ним постоянно нужно бороться? Наверное проще использовать какую-то простую программу для отправки почты (таких кажется много, например, msmtp). Или самому на Python3 написать smtp-сервер, для него есть готовая качественная библиотека, и в программе обрабатывать адреса и заголовки именно так, как это нужно.

Еще вариант - доработать исходники Exim. Но это создаст проблему на всю жизнь - вместо простого обновления на новую версию нужно будет патчить исходники, дорабатывать их, компилировать.

Я пока еще ничего не решил, просто размышляю.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-02 1:13:22

Иван Петров писал(а):Источник цитаты то в случае ошибок отправки еще на этапе передачи

Попробуйте error_to в роутере.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-01 23:46:00

xM писал(а):Источник цитаты У локальной при использовании headers_rewrite ничего не меняется. Потому что она через этот транспорт ходить не будет.

Совершенно верно. Но headers_rewrite не умеет менять адрес From конверта, так что нам от него сейчас мало толка. А менять его умеет begin rewrite, который находится в файле 00_exim4-config_header, и вот этот меняет везде, включая локальные письма.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-01 23:22:56

У локальной при использовании headers_rewrite ничего не меняется. Потому что она через этот транспорт ходить не будет.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-01 23:19:43

xM писал(а):Источник цитаты Тогда я не понимаю в чём проблема

Иван Петров писал(а):Источник цитаты Есть другое решение - изменение адреса в /etc/email-addresses или в rewrite, что по-сути одно. Это работает. Но в этом случае адреса изменяются и у локальной почты, и у всех становится один исходящий адрес, что совершенно не нужно. Нужно для локальной почты иметь локальные адреса, а для почты снаружи - внешние.
...
Попутно, вырисовывается еще одна проблема - если получится как-то заранее поменять адреса в исходящей через smarthost почте (на адрес mail.ru), то в случае ошибок отправки еще на этапе передачи на mail.ru (не удалось отправить на mail.ru - превышен размер, нет адресата, сбой) сообщения будут направляться не автору письма в локальной сети, а на внешний почтовый ящик mail.ru - это плохо, отправитель не узнает об ошибке.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-01 23:14:14

Иван Петров писал(а):Источник цитаты Когда я с помощью rewrite менял заголовоки "rewrite = *@* foo@mail.ru Ffr" (включая From конверта), письмо успешно отправлялось.

Тогда я не понимаю в чём проблема

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-01 23:12:58

xM писал(а):Источник цитаты А попробуйте таки в вашем транспорте для смартхоста
headers_rewrite = *@your.domain foo@mail.ru Ffr
И проверьте трассировкой сессии проходит ли у вас аутентификация.

Да, я с headers_rewrite уже испробовал множество раз в разных вариантах. Менял и в smtp_транспорте, и в локальном, и даже посылал на свой рукописный smtp-сервер, чтобы лучше понять, что происходит. И даже такой вариант, который меняет все возможные заголовки:

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

headers_rewrite       = *@* foo@mail.ru

Авторизация происходит, тут проблем нет.
Когда я с помощью rewrite менял заголовоки "rewrite = *@* foo@mail.ru Ffr" (включая From конверта), письмо успешно отправлялось.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение xM » 2017-03-01 23:00:13

А попробуйте таки в вашем транспорте для смартхоста

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

headers_rewrite       = *@your.domain foo@mail.ru Ffr

И проверьте трассировкой сессии проходит ли у вас аутентификация.

EXIM - локальная почта + smarthost на mail.ru - неужели нельзя?

Сообщение Иван Петров » 2017-03-01 22:50:01

xM писал(а):Источник цитаты envelope вы не поменяете, а From вполне (f). По идее, при наличии авторизации на отправку (а она там, вроде бы, обязательна) этого должно быть достаточно.

Нет, сессия прерывается еще на этапе конверта из-за несоответствия From конверта и имени в аутентификации:

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

1chjZW-0000j3-7F ** user1@mail.ru R=smarthost T=remote_smtp_smarthost: SMTP error from remote mail server after RCPT TO:<user1@mail.ru>: host smtp.mail.ru [217.69.139.160]: 501 sender address must match authenticated user

Имя отправителя может отличаться, например в gmail.com - они просто сами переписывают его за вас.

Вернуться к началу