The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Дублирование доставки почты в Postfix c авторизацией в mysql
Есть 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.
 
 
16.09.2005 , Автор: triz0r
Ключи: mail, postfix, forward, mysql / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевые сервисы / Mail, почта / Отправка и пересылка сообщений на уровне пользователя

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, HFSC (??), 10:59, 16/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот это новость :). Еще лучше поставить себе postfixadmin...
     
     
  • 2.2, triz0r (?), 12:35, 16/09/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Если не понял зачём это нужно - так не надо сразу корчить из себя гуру
     

  • 1.3, HFSC (??), 14:06, 16/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    гуру никто не корчит - просто ктото в очередной раз изобрел велосипед
     
     
  • 2.4, Аноним (-), 16:54, 16/09/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >гуру никто не корчит - просто ктото в очередной раз изобрел велосипед

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


     
     
  • 3.9, ali (??), 12:27, 05/03/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > Я например тоже не думал, что в таблицах мапинга множественные записи нужно указывать через запятую, а не просто создавать разные пары записей.
    > Для SQL хранилища это непрозрачно, сразу не допираешь, что это полный аналог файлов.

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

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

     
     
  • 4.10, Sergey (??), 11:29, 29/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >А мануалы слабо почитать?
    >Однозначно велосипед!
    Мануалы к чему, к 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 является вполне нормальным и похоже единственно правильным..
     

  • 1.5, triz0r (?), 10:40, 19/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    главное  что работает :)
     
  • 1.6, Dmitriy.Donchenko (?), 00:49, 22/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Собственно, а почему для "зачем это нужно" не использовать 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

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

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

     
  • 1.7, triz0r (?), 12:02, 23/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё через mysql и только через ОДНУ таблицу!!!
    Если всё на mysql - не хочется перегружать конфигурацию hash справочниками + postmap можно забыть :)
     
     
  • 2.12, Sergey (??), 13:55, 29/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Всё через mysql и только через ОДНУ таблицу!!!
    >Если всё на mysql - не хочется перегружать конфигурацию hash справочниками +
    >postmap можно забыть :)
    про приходящую почту понятно, но как быть если нужно сопировать исходящую? если использовать переменную sender_bcc_map, то эту самую мапу нужно где-то описывать.. и как-то мне в голову не приходит ничего, как совместить virtual_alias_map и sender_bcc_map в одной таблице, похоже придется заводить отдельную.. если придумаешь - напиши :-)
     

  • 1.8, Vas (??), 16:54, 19/01/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как при использовании sender_bcc_maps сделать так, чтобы письма копировались не в один ящик, а в несколько?  
     
     
  • 2.11, Sergey (??), 13:44, 29/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Как при использовании sender_bcc_maps сделать так, чтобы письма копировались не в один
    >ящик, а в несколько?
    согластно документации постфикс - никак, поддерживается один адрес, но ведь всегда эот понятие можно расширить :-) есть мысль отправлять на виртуальный ящик на сервере, который прописать в таблмце алиасов (собственного Maildir у него может и не быть, если в поле получателей не указывать пользователя с сервера). Т.е. в sender_bcc_maps прописать адрес bcc_user@localdomain, а в таблице алиасов alias=bcc_user@localdomain, rcpt=addr1, addr2, addr3. Впрочем если указать еще до кучи и bcc_user@localdomain - исходящая почта будет просто приходить еще и на этот адрес.
     

  • 1.14, AndreySerov (?), 16:01, 16/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    если у вас присутствует в main.cf virtual_mailbox_maps
    virtual_maps
    то тойже таблице alias необходимо к тем ящикам на которые копировать почту добавить самого владельца ящика иначе будет просто форвардить. Получается форвардить и самому владельцу. Зацикливания нет. Проверено
    может поможет кому)
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру