URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 12241
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Дублирование доставки почты в Postfix c авторизацией в mysql"

Отправлено auto_tips , 16-Сен-05 10:59 
Есть Postfix + авторизация пользователей в mysql. Так вот появилась необходимость почту,
приходящую на какой-нить адрес ещё пересылать кому-угодно. Т.е. не форвардить письмо,
а именно копию отсылать на нужный адрес. Притом хочется чтобы всё было красиво и понятно.

Решение:

Postfix ищет virtual_maps в базе mysql
   virtual_maps=hash:/etc/postfix/virtual_maps.cf

virtual_maps.cf содержит запрос который по адресу email выдает alias.  
Что-то типа такого:

   user = postfix
   password = postfix
   dbname = mail
   table = alias
   select_field = goto
   where_field = address
   hosts = 127.0.0.1

На goto идет почта, которая предназначается для address. Т.е. на один физический maildir
(или другой конечный пункт) собирается почта от разных алиасов.
Проблема в том что при такой конфигурации не сделать так чтобы почта для user@domain.com
шла и на alias1@domain.com и на alias2@domain2.com

После анализа того, как механизм Postfix читает возврат от mysql получаем:

Нужно чтобы почта для локального юзера user@domain.com приходила на user@domain.com + на mail@domain2.com
и + ещё куда нить :) При этом везде должна лежать копия.

Обычно таблица alias содержит вот что:

   address goto
   email1   email2
   email3   email2
   ...
   email5   email_other

Надо сделать так.

   address   goto
   email     other_email1,other_email2,...

Т.е. через запятую без пробелом указываем все те адреса куда надо послать копию письма.
hash:/mysql примет строку и КОРРЕКТНО подставит её куда надо, а сам Postfix нормально
всё выставит в очередь сообщений и отправит. Там же указываем адрес локальной доставки.
И всё :) Никаких скиптов, procmail и прочей бурды.

Теперь представьте гибкость и легкость с такими вещами как redirect, forwarding, copy + mysql.

URL:
Обсуждается: http://www.opennet.me/tips/info/893.shtml


Содержание

Сообщения в этом обсуждении
"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено HFSC , 16-Сен-05 10:59 
Вот это новость :). Еще лучше поставить себе postfixadmin...

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено triz0r , 16-Сен-05 12:35 
Если не понял зачём это нужно - так не надо сразу корчить из себя гуру

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено HFSC , 16-Сен-05 14:06 
гуру никто не корчит - просто ктото в очередной раз изобрел велосипед

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено Аноним , 16-Сен-05 16:54 
>гуру никто не корчит - просто ктото в очередной раз изобрел велосипед

Я например тоже не думал, что в таблицах мапинга множественные записи нужно указывать через запятую, а не просто создавать разные пары записей.
Для SQL хранилища это непрозрачно, сразу не допираешь, что это полный аналог файлов.



"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено ali , 05-Мрт-06 12:27 
> Я например тоже не думал, что в таблицах мапинга множественные записи нужно указывать через запятую, а не просто создавать разные пары записей.
> Для SQL хранилища это непрозрачно, сразу не допираешь, что это полный аналог файлов.

А мануалы слабо почитать?
Однозначно велосипед!

Кроме того, если в запросе SELECT под описание попадает несколько записей, все они вернутся postfix'у через запятую. Так что заносить в базу через запятую в одной строке вовсе не обязательно. Все адреса, куда надо скопировать, можно заносить в базу отдельными записями, но с одинаковым исходным адресом (с которого будет рассылаться копия во все остальные ящики).


"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено Sergey , 29-Май-06 11:29 
>А мануалы слабо почитать?
>Однозначно велосипед!
Мануалы к чему, к postfix, MySQL, просто про синтаксис SQL запросов?
простой поиск по forward в доках идущих с postfix ничего толкового по теме не дает..
а так статья как мелкая хавтушка на тему форвардинга (для редиректа достаточно неуказывать адрес локального юзера, все уйдет по адресам указанным в поле 'goto') приходящей почты вполне нормальная.
>Кроме того, если в запросе SELECT под описание попадает несколько записей, все они вернутся >postfix'у через запятую. Так что заносить в базу через запятую в одной строке вовсе не >обязательно.
угу, возможно, только внести в базу их затруднительно
>Все адреса, куда надо скопировать, можно заносить в базу отдельными записями, >но с >одинаковым исходным адресом (с которого будет рассылаться копия во все остальные >ящики).
Интересно ты пробовал сделать это? У меня почему-то мускуль первую запись вида alias=user@domain rcpt=user1@domain1 проглатывает нормально, а уже на вторую alias=user@domain rcpt=user2@domain2 материться duplicate entry 'alias=user@domain rcpt=user1=domain1' for key.. что собственно неудивительно, когда поле алиас является первичным ключем, поле rcpt им делать неполучится.. так что решение использовать записи типа  alias=user@domain rcpt=user1@domain1, user2@domain2, user3@domain3 является вполне нормальным и похоже единственно правильным..

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено triz0r , 19-Сен-05 10:40 
главное  что работает :)

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено Dmitriy.Donchenko , 22-Сен-05 00:49 
Собственно, а почему для "зачем это нужно" не использовать sender_bcc_maps и recipient_bcc_maps?

Очень как мне кажется удобно и не нужно ничего изобретать.

cat main.cf
recipient_bcc_maps = hash:/usr/local/etc/postfix/recipient_bcc_map
sender_bcc_maps = hash:/usr/local/etc/postfix/sender_bcc_map

cat sender_bcc_map
user@mail.com       wherecopy@mail.com

Если я правильно понял, автор просто хотел настроить механизм "архивирования" почты?

Использование данного варианта в плохих целях не гуманно и все такое прочее.


"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено triz0r , 23-Сен-05 12:02 
Всё через mysql и только через ОДНУ таблицу!!!
Если всё на mysql - не хочется перегружать конфигурацию hash справочниками + postmap можно забыть :)

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено Sergey , 29-Май-06 13:55 
>Всё через mysql и только через ОДНУ таблицу!!!
>Если всё на mysql - не хочется перегружать конфигурацию hash справочниками +
>postmap можно забыть :)
про приходящую почту понятно, но как быть если нужно сопировать исходящую? если использовать переменную sender_bcc_map, то эту самую мапу нужно где-то описывать.. и как-то мне в голову не приходит ничего, как совместить virtual_alias_map и sender_bcc_map в одной таблице, похоже придется заводить отдельную.. если придумаешь - напиши :-)

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено Vas , 19-Янв-06 16:54 
Как при использовании sender_bcc_maps сделать так, чтобы письма копировались не в один ящик, а в несколько?  

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено Sergey , 29-Май-06 13:44 
>Как при использовании sender_bcc_maps сделать так, чтобы письма копировались не в один
>ящик, а в несколько?
согластно документации постфикс - никак, поддерживается один адрес, но ведь всегда эот понятие можно расширить :-) есть мысль отправлять на виртуальный ящик на сервере, который прописать в таблмце алиасов (собственного Maildir у него может и не быть, если в поле получателей не указывать пользователя с сервера). Т.е. в sender_bcc_maps прописать адрес bcc_user@localdomain, а в таблице алиасов alias=bcc_user@localdomain, rcpt=addr1, addr2, addr3. Впрочем если указать еще до кучи и bcc_user@localdomain - исходящая почта будет просто приходить еще и на этот адрес.

"Дублирование доставки почты в Postfix c авторизацией в mysql"
Отправлено AndreySerov , 16-Ноя-06 16:01 
если у вас присутствует в main.cf virtual_mailbox_maps
virtual_maps
то тойже таблице alias необходимо к тем ящикам на которые копировать почту добавить самого владельца ящика иначе будет просто форвардить. Получается форвардить и самому владельцу. Зацикливания нет. Проверено
может поможет кому)