Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 10:06 Заголовок сообщения: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
Kak perenapravit' vsyu pochtu (ne tol'ko vhodyashuyu, no i ishodyashuyu) v sendmaile ? |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 11:15 Заголовок сообщения: Re: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
Пишешь в mailertable одну строку, состоящую из точки и получателя с типом почтового агента, и делаешь необходимые действия для того, чтобы изменения вступили в силу.
PS. Для sendmail'а по технологии обработки писем нет "входящей" или "исходящей" почты. Любая почта переправляется через определенный почтовый агент согласно адресу получателя. Это делается однообразно для любой почты. |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 12:17 Заголовок сообщения: Re: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
Ya delayu file .forward so strokami tipa `me@dom.com` - i prihodyashaya pochta idyot na me@dom.com, no ishodyashaya - net. |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 12:21 Заголовок сообщения: Re: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
Mozhno primer stroki dlya mailertable ? For example, ya hochu, chtobi pochta (i prihodyashay, i ishodyashaya) dlya conkretnogo adresa user_1@dom.com, dublirovalas' i na user_2@dom.com. |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 13:36 Заголовок сообщения: Re: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
sendmail переправляет локальную почту почтовому агенту /usr/libexec/mail.local (или другой аналогичной программе), а дальше судьба этих писем его не интересует. Локальная почта -- это почта, адресованная пользователю той машины, где работает сам sendmail, и, естественно, на localhost.
Файл .forward поэтому исполняется не sendmail'ом, а почтовым агентом.
Исходящую почту клиента этот агент не обрабатывает, соответственно, файлом .forward тут не помочь.
Что делать -- в ответе на следующую реплику. |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 14:27 Заголовок сообщения: Re: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
Tak chto zhe delat' ? U menya sendmail + mail.local + popper. Ya hochu dublirovat' vsyu pochtu dlya usera user@my.dom.com. |
|
Вернуться к началу |
|
 |
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Ср Сен 04 2002 14:52 Заголовок сообщения: Пример (+) |
|
|
В файле mailertable прописываем: user@domain.ru ESMTP:new_user@new_doman.ru
Можно использовать макросы. %1 - это имя ящика, %2 - имя домена.
Например отправляем всю почту для домена domain.ru в один ящик.
domain.ru ESMTP:user@new-domain.ru .domain.ru ESMTP:user@new-domain.ru |
|
Вернуться к началу |
|
 |
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Ср Сен 04 2002 14:54 Заголовок сообщения: Все просто (+) |
|
|
Создавай алиасы. В файле aliases пропиши:
user: new-user@new-domain.ru
Не забудь sendmail перезапустить. |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 15:04 Заголовок сообщения: Re: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
Вопросы про абсолютно всю почту и почту конкретного пользователя -- это разные вопросы, и по-разному решаются. Исходное утверждение следующее. Отправку почты через sendmail можно рассматривать как команду
sendmail _адрес_получ_ |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 15:11 Заголовок сообщения: Re: Пример (+) |
|
|
a mozhno tak - user@domain.ru ESMTP:new_user@new_doman.ru user@domain.ru ESMTP:user@new_doman.ru ? V tom smisle, chtobi dublirovat', a ne prosto perenapravlyat' ? |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 15:12 Заголовок сообщения: Re: Все просто (+) |
|
|
Этот вариант, так же как и .forward, IMHO хорош только для дисциплинированного отправителя. Правда .forward можно, хотя и нежелательно, защитить от изменений недисциплинированным отправителем. Но псевдонимом отправитель может не пользоваться. |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 15:15 Заголовок сообщения: Re: Kak forwardit' vsyu pochtu ? (sendmail) |
|
|
absolyutno vsya pochta konkretnogo usera. Yest' user_0 s yashikom user_0@my.dom.com. Nado, chtobi vsya yego pochya shla i k nemu, i na user_1@my.dom.com. I in, i out. S in - ponyatno, mail.local cherez .forward, a kak s `out` ? |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 15:17 Заголовок сообщения: Re: Все просто (+) |
|
|
Vse pol'zuyutsya OE. |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 15:18 Заголовок сообщения: Re: Пример (+) |
|
|
mailertable работает в виде БД mailertable.db, в которой (сужу по косвенным признакам в документации) каждое ключевое значение уникально, либо имеет место поиск только первого ключа из одинаковых. Короче, на повторы не надейся. |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Ср Сен 04 2002 15:23 Заголовок сообщения: Re: Пример (+) |
|
|
Yasno. No dolzhe zhe bit' kakoy-to vihod ? Chto-to vrode skritoy copy, kotoraya budet otsilat'sya na user_1@... , kogda user_0 posilayet chto-to kuda libo ? |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 15:40 Заголовок сообщения: Не так все просто |
|
|
Для OE. OE забирает почту через POP/IMAP-сервер, но до этого она доставляется /usr/libexec/mail.local'ом в каталог /var/mail и он же успевает исполнить файл .forward. На приеме такое решение подходит. При отправке OE связывается с сервером SMTP, который сразу куда-то (или в очередь, или получателю согласно адресу получателя) отправляет. Если заставишь пользователей отправлять на псевдоним, то дублирование почты будет, а не заставишь -- не будет. Да и то, таким образом будет дублироваться только почта, отправляемая по псевдониму, а не вся. Кардинальное решение этой проблемы нетривиально. Один из подходов обозначен в реплике Борис 04-09-2002 16:04. |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 17:19 Заголовок сообщения: Ставишь ему трояна, который это делает, и готово :) А серьезно... |
|
|
Ставишь ему трояна, который это делает, и готово  А серьезно, то вопрос поставлен не совсем корректно, и дело обстоит таким образом: sendmail -- это диспетчер почтовых агентов, в случае, если доставка к следующему узлу/машине выполняется по SMTP, он работает и как почтовый агент. Как диспетчер, он не анализирует содержимое пересылаемой информации (минимальная обработка полей From: и To: не в счет). По сути его можно считать каналом, по которому программа-отправитель (OE, mail, elm и др.) связывается в программой получателем (mail.local, uux, файл, труба и др.). Вопрос поэтому нужно ставить так: как отправить все сообщения определенной программе (чтобы она продублировала и послала по нужному адресу получаемый файл)? Пример ответа в предыдущей реплике. |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Ср Сен 04 2002 18:10 Заголовок сообщения: Повтор (здешнее ПО съело часть ответа) |
|
|
Вопросы про абсолютно всю почту и почту конкретного пользователя -- это разные вопросы, и по-разному решаются. Исходное утверждение следующее. Отправку почты через sendmail можно рассматривать как команду
sendmail _адрес_получ_ "знак_меньше" _файл_письмо_
sendmail анализирует _адрес_получ_ согласно своим правилам: сначала унифицирует адрес и сравнивает его с имеющимися в таблице mailertable. Если в таблице адрес есть, то выполняется отправка через найденный почтовый агент+аргументы, если адреса нет, но есть строка "точка агент+аргументы", отправляется через этот агент+аргументы, если нет ни того, ни другого, то отправляется через почтовый агент согласно другим правилам, например через "почтовый агент error".
Таким способом обрабатывается вообще *вся* почта, а не только от конкретного отправителя.
Далее, непосредственно перед передачей письма программе-почтовому агенту sendmail подменяет содержимое полей From: и To: в тексте письма согласно дополнительным правилам.
Таким образом, sendmail фактически не анализирует содержимое письма. В последних версия появился антиспамовый анализ отправителя, но он слишком общий, для другого случая и здесь не подходит.
В конечном счете доставку письма получателю выполняет не sendmail, а программа-почтовый агент, например /usr/libexec/mail.local доставляет письма на своей машине. Она же (а не sendmail) исполняет файл .forward
Что тебе делать? Осмыслить сказанное и заняться творчеством. Один из подходов такой: заставить sendmail принудительно прогонять *всю* почту через дополнительную программу. Такой подход применил Вакуленко из Демоса просто для конфигурирования sendmail'а. Но этот подход потребует полного переписывания правил в файле sendmail.cf вручную. Идея в том, что доставка писем выполняется в три этапа:
1) sendmail отправляет *все* письма, кроме писем со специальной меткой в адресе получателя, на обработку некоторой дополнительной программе с аргументом==адрес получателя.
2) эта дополнительная программа обрабатывает *содержимое* письма, затем посылает обработанное письмо, возможно с измененным содержимым, по адресу "адрес получателя+специальная метка". Твоя программа может послать копию письма на другой адрес (конечно, со специальной меткой).
3) sendmail при обработке письма, отправленного на "адрес получателя+специальная метка" убирает специальную метку и отправляет нужному получателю.
То есть специальная метка выполняет роль признака обработанности письма. А письмо обрабатывается своей программой, которая может следать с ним, что требуется.
Дерзай. |
|
Вернуться к началу |
|
 |
nikyev Гость
|
Добавлено: Чт Сен 05 2002 14:54 Заголовок сообщения: Re: Повтор (здешнее ПО съело часть ответа) |
|
|
Spasibo- )) Ne obeshayu, chto derznu, no ideya ponyatna, obyasnil tak, chto ya (chaynik v sendmaile) uhvatil srazu. Yesli reshus' nachat', to soobshu ob etom zdes' zhe. Yesho raz spasibo. |
|
Вернуться к началу |
|
 |
|