The OpenNET Project / Index page

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

Postfix индивидуальная квота + virtual + maildir + MySQL/PostgreSQL

17.11.2003 15:46

Описание процесса настройки и патч для индивидуального квотирования почтовых ящиков пользователей, аккаунты которых хранятся в MySQL или PostgreSQL. Определение превышения квоты производится на "лету", не принимая тела сообщения (экономия трафика), но при этом и отправителю и получателю отправляется уведомление.

  1. Главная ссылка к новости (http://vitaliy.tdauto.ru/...)
  2. Если сайт vitaliy.tdauto.ru недоступен, то здесь можно найти копию
  3. postfix2.0pvq.gz - копия патча.
Автор новости: -=VD=-
Ключевые слова: patch, mail, virtual, quota, mysql, postfix, limit
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (49) Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Roman Y. Bogdanov (?), 08:20, 19/11/2003 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Коннект проходит на порт, а потом таймаут.
     
     
  • 2.4, VD (?), 11:44, 19/11/2003 [^] [ответить]    [к модератору]
  • +/
    >Коннект проходит на порт, а потом таймаут.

    Таймаут после чего? сразу после коннекта? Патч включается только после
    RCPT TO:

     
  • 2.6, ViD (?), 14:52, 19/11/2003 [^] [ответить]    [к модератору]
  • +/
    Устранил баг(смотри ниже), возможно причина была в нем... хотя вряд ли.
    В любом случае по подробнее.
     
  • 1.2, HFSC (?), 11:15, 19/11/2003 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    не ставится вместе с ssl патчем, без альясов не работает,
    невозможно полностью отключить квоту для virtual -  начинает жаловаться  
    fatal: bad string length (0 < 1):
    virtual_quota_user_message =
     
     
  • 2.3, VD (?), 11:42, 19/11/2003 [^] [ответить]     [к модератору]
  • +/
    Ясно, огромное спасибо сейчас поправлю Вот так virtual_quota_user_bounce ... весь текст скрыт [показать]
     
  • 1.5, VD (?), 12:25, 19/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Все, вот этот КОСЯК устранен. Теперь анализирует  значение у этой эту строчки.
    virtual_quota_user_message =
    fatal: bad string length (0 < 1):

    >без альясов не работает
    Вот на эту тему, я честно говоря, немного не могу представить в чем именно может быть трабл. Я там сделал так, что квота по альясам НИКАК не пересекается с основной работой кода postfix.

     
  • 1.7, HFSC (?), 15:08, 19/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Насчет ssl: postfix 2.0.16 + tls патч pfixtls-0.8.16-2.0.16-0.9.7b
    Что касается альсясов
    postfix почемуто не проверял квоту если у юзера не было записи в virtual_alias_maps
     
     
  • 2.8, ViD (?), 15:41, 19/11/2003 [^] [ответить]     [к модератору]  
  • +/
    Сейчас как раз проверяю если что выложу дополнительный патч под такую конфигурац... весь текст скрыт [показать]
     
  • 1.9, HFSC (?), 16:03, 19/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    юзер был прописан ТОЛЬКО в virtual_mailbox_maps и почта ему корректно доставлялась.
    Альясы как раз и не надо было квотировать т.к у юзера их и не было, но пока не прописал юзера в альясах - квота не проверялась.
    Насчет tls - quota патч ставился как до так и после применения tls патча и postfix не собирался при любом варианте
     
     
  • 2.10, ViD (?), 16:34, 19/11/2003 [^] [ответить]     [к модератору]  
  • +/
    С tls разобрался, tls патч знатно перепахивает smtpd c и мои добавочные определе... весь текст скрыт [показать]
     
     
  • 3.11, ViD (?), 17:44, 19/11/2003 [^] [ответить]     [к модератору]  
  • +/
    Похоже что подобное связано с представлением адресов в части доменного окончания... весь текст скрыт [показать]
     
  • 2.12, ViD (?), 19:33, 19/11/2003 [^] [ответить]    [к модератору]  
  • +/
    Так, ну вроде взошло, должно работать по всякому, все выложил на сайте с исправлениями.

    HFSC - как Вас на сайте представить?
    Хочу добавить строчку благодарности за помощь в исправлении багов.

     
  • 1.13, HFSC (?), 23:48, 19/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Все собралось,пропатчилось но осталась одна небольшая проблема: патч не делает главного - не режет по превышению квоты
    В таблице в поле квота для юзера стоит 1 байт, отсылаю ему кучу писем - в логах мускула видно что поле квота проверяется, однако никакой дальнейшей реакции нету
     
  • 1.14, ViD (?), 12:31, 20/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Так, ну что же... примерно часа через три залогирую патч очень подробно и выложу, и если конечно Вы не устали, мы все же разберемся с вашим случаем. Другого способа не вижу, у меня во всех случаях он к сожалению работает.
     
  • 1.15, HFSC (?), 14:42, 20/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Проблема была в правах на virtual_maildir_base
    Кусок моего конфига:
    virtual_mailbox_base = /var/spool/postfix/virtual
    virtual_gid_maps = static:1007
    virtual_uid_maps = static:1006
    транспорт virtual работал от юзера vmail с uid и gid 1006:1007, права на /var/spool/postfix/virtual
    были: drwx------  5 vmail  vmail  512 20 ноя 13:25 /var/spool/postfix/virtual/
    Мессаги спокойно валились в ящик,пока я не сделал
    chgrp -R postfix /var/spool/postfix/virtual && __
    chmod -R g+rwx /var/spool/postfix/virtual
    Только после этого был создан служебный файл и мессаги стали резаться. Те можно ли сделать что бы все операции с файлами производились от юзера:группы которые указаны в virtual_uid и virtual_gid ?
     
     
  • 2.18, ViD (?), 19:07, 20/11/2003 [^] [ответить]     [к модератору]  
  • +/
    Подумавши малость и прикинув что к чему пока правда в теории, думаю что можно Д... весь текст скрыт [показать]
     
  • 1.16, Norguhtar (?), 15:14, 20/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А зачем ?
     
  • 1.17, ViD (?), 16:17, 20/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ааа вон чего... Уффф ясно :) функция в патче check_dirsize(char * maildir) выполняется от имени smtpd который соответственно работает под юзером postfix в результате всегда честно возвращает размер maildir = 0 т.к. ей ничего не разрешают смотреть.
      
    Так, во первых залогировать это стоит, плюс сейчас еще опишу на сайте эту ситуацию.
    Ну и подумаю еще как разрулить сей конфликт.

    P.S.
    HFSC :) вы чертовски терпеливый и желающий разобраться человек, сенкс :)


     
  • 1.19, NetScripter (?), 09:17, 24/11/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Сделал все как написано - игнорирует квоту. Патч лепил patch -p0 < postfix2.0pvq . Без опции -p0 не патчится. Пробовал указать в настройках mail_limit.cf несуществующее поле квоты - ругается в логах, т.е. все-таки смотрит его. Никаких доп. файлов в maildir'e не создает. Используется postfix-2.0.16+sasl2+mysql. В чем может быть проблема?

     
     
  • 2.20, ViD (?), 12:42, 24/11/2003 [^] [ответить]     [к модератору]  
  • +/
    Такая связка 100 абочая и судя по симпомам, может быть то, что у smtpd нет досту... весь текст скрыт [показать]
     
     
  • 3.21, NetScripter (?), 13:47, 24/11/2003 [^] [ответить]     [к модератору]  
  • +/
    main cf Virtual quota virtual_mailbox_limit_maps mysql etc postfix mail_li... весь текст скрыт [показать]
     
     
  • 4.22, NetScripter (?), 13:59, 24/11/2003 [^] [ответить]     [к модератору]  
  • +/
    на всякий случай строчка из БД uid gid alias maildir ... весь текст скрыт [показать]
     
     
  • 5.23, ViD (?), 16:15, 24/11/2003 [^] [ответить]    [к модератору]  
  • +/
    Сегодня сооружу нечто подобное, гляну, скажу.
     
  • 1.24, Wizard (?), 12:29, 03/12/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >Описание процесса настройки и патч для индивидуального квотирования почтовых ящиков пользователей, аккаунты
    >которых  хранятся в MySQL или PostgreSQL. Определение превышения квоты производится
    >на "лету", не принимая тела сообщения (экономия трафика), но при этом
    >и отправителю и получателю отправляется уведомление.
    >
    >URL: http://vitaliy.tdauto.ru/
    >Новость: http://www.opennet.ru/opennews/art.shtml?num=3092

    Вроде бы все нормально, но почему почта проходит , правда  не ложится в ящик при превышении квоты,нет сообщений о превышении квоты пользователям!

     
     
  • 2.25, ViD (?), 17:28, 07/12/2003 [^] [ответить]     [к модератору]  
  • +/
    Проходит до mailq Логи 1 соединения с ключем в master sfg smtpd -v и main cfg ... весь текст скрыт [показать]
     
     
  • 3.26, Costas (?), 16:06, 09/12/2003 [^] [ответить]    [к модератору]  
  • +/
    Идея замечательная и реализация тоже, пробовал для связки Postfix+sasl+MySQL+courier-imap, чего то не покатила, никакой реакции, всё работало как работало, в логах тоже ничего, прибываю в раздумьях.
     
     
  • 4.27, ViD (?), 17:05, 09/12/2003 [^] [ответить]     [к модератору]  
  • +/
    логи smtpd -v т е в расширенном варианте , почти уверен что там просто проблем... весь текст скрыт [показать]
     
     
  • 5.28, Costas (?), 11:17, 10/12/2003 [^] [ответить]     [к модератору]  
  • +/
    Логи смотрел, ничего нового не увидел, почта на сервак падает, в директорию юзер... весь текст скрыт [показать]
     
     
  • 6.29, Costas (?), 11:23, 10/12/2003 [^] [ответить]     [к модератору]  
  • +/
    Конфиг следующий virtual_mailbox_base data vmail transport_maps ... весь текст скрыт [показать]
     
     
  • 7.30, Costas (?), 11:27, 10/12/2003 [^] [ответить]    [к модератору]  
  • +/
    права соответственно следующие
    /data/vmail
    drwxrwx---    3 postfix  postdrop     4096 Dec 10 13:30 vmail
     
     
  • 8.31, ViD (?), 09:29, 16/12/2003 [^] [ответить]    [к модератору]  
  • +/
    >права соответственно следующие
    >/data/vmail
    >drwxrwx---    3 postfix  postdrop    
    >4096 Dec 10 13:30 vmail


    Прошу прощение за задержку с ответом.
    По сути вопроса, из конфига понятно что проблема может быть в следующем:

    local_recipient_maps = $virtual_mailbox_maps $virtual_maps $transport_maps

    На сайте я там описал как раз подобную ситуацию.

    Не сработает если:
    1. local_recipient_maps = /.../ваш _ файл
    2. Или у пользователей путь к почте ../../vasa
    3. Или virtual_mailbox_limit_maps закомментарено
    4. Или поле квоты в таблице пустое
    Или этот адрес есть в:
    5. recipient_canonical_maps = /.../ваш _ файл
    6 . canonical_maps = /.../ваш _ файл

    Ваш конфиг как раз под 1 вариант.
    Загляните на сайт и проверьте вот этот момент:
    550 <nomail@хххх.хх>: User unknown in virtual mailbox table
    По ходу, у Вас определена локальная доставка и квота не проверяется.

     
  • 1.32, swap (?), 16:14, 16/12/2003 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    2 VID: Вообще, думаю было-бы неплохо если бы Вы поместили полный пример рабочих конфигураций файлов main.cf, master.cf и т.д. Пытаюсь настраивать как описано Вами, квота в mysql проверяется, но служебный файл не создаётся.  Права на virtual_mailbox_base соответсвуют mail_owner. Да ещё, как по расширенному логу smtpd -v определить работу патча?

     
     
  • 2.33, ViD (?), 12:32, 20/12/2003 [^] [ответить]    [к модератору]  
  • +/
    >2 VID: Вообще, думаю было-бы неплохо если бы Вы поместили полный пример
    >рабочих конфигураций файлов main.cf, master.cf и т.д. Пытаюсь настраивать как описано
    >Вами, квота в mysql проверяется, но служебный файл не создаётся.  
    >Права на virtual_mailbox_base соответсвуют mail_owner. Да ещё, как по расширенному логу
    >smtpd -v определить работу патча?


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

     
     
  • 3.34, Costas (?), 08:16, 22/12/2003 [^] [ответить]    [к модератору]  
  • +/
    Поддерживаю всё выше сказанное по поводу посмотреть рабочую конфигурацию, кстати пока работаю на птче http://web.onda.com.br/nadal/, всё ничего, но только сообщения валятся отправителю а не получателю...
     
     
  • 4.35, ViD (?), 13:24, 22/12/2003 [^] [ответить]     [к модератору]  
  • +/
    Сдаюсь ниже конфиги tls sasl можно не учитывать Вот master cf ... весь текст скрыт [показать]
     
     
  • 5.36, swap (?), 16:43, 23/12/2003 [^] [ответить]    [к модератору]  
  • +/
    > Сдаюсь :) ниже конфиги tls/sasl можно не учитывать
    С Вашей всё получилось, работает, спасибо. Вообще проблема была в том, что у меня адреса во внутренней сети вида name@mail.subdomain.domain, почтовый сервер mail.subdomain.domain. Домен mail.subdomain.domain был прописан как виртуальный  и хотя
    (Не сработает если:
    1. local_recipient_maps = /.../ваш _ файл
    2. Или у пользователей путь к почте ../../vasa
    3. Или virtual_mailbox_limit_maps закомментарено
    4. Или поле квоты в таблице пустое
    Или этот адрес есть в:
    5. recipient_canonical_maps = /.../ваш _ файл
    6 . canonical_maps = /.../ваш _ файл ) - здесь было всё нормально, доставка всё равно была локальная. Переход к адресам вида name@subdomain.domain решил все проблемы.
     
     
  • 6.37, Costas (?), 10:29, 25/12/2003 [^] [ответить]    [к модератору]  
  • +/
    А у кого-нибудь в рабочей конфигурации присутствует в таблице записть типа subdomain.domain smtp:192.168.1.2?
    это к вопросу об MX записях.
     
     
  • 7.38, Costas (?), 10:34, 25/12/2003 [^] [ответить]    [к модератору]  
  • +/
    Потому как у меня чего-то не работает... Хм...

     
  • 1.39, Victor (??), 18:24, 04/04/2004 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Привет!

    Если ты сюда еще заглядываешь, то хочется попросить добавить еще одну проверку (если это не сложно). Часто вместе с MAIL FROM приходит сразу и размер доставляемого сообщения в виде:
    MAIL FROM: <user@some.net> SIZE=1024
    RCPT TO: <...>
    Так вот было бы просто замечательно если б это значение на этой-же стадии суммировалось с текущим размером почтового ящика и в случае превышения
    заданной квоты тут-же вымылался отлуп. На сегодня мы принимаем любую почту, если ящик не переполнен и только после физического переполнения
    шлем отлупы.

    ps: огромное спасибо за патч. Почти без напильника накатил на 2.0.19

     
     
  • 2.40, ViD (??), 09:47, 16/04/2004 [^] [ответить]     [к модератору]  
  • +/
    В начале оно так и было однако потестировав, пришел к выводу что SIZE в месса... весь текст скрыт [показать]
     
  • 1.41, Gezm0 (?), 02:44, 03/06/2004 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Планируется ли дальнейшая поддержка патча/включение его в сам postfix? А то версия 2.1.0 уже вышла, баги правят.. С 2.0.x переходить придётся, а терять такую функциональность очень не хочется..
     
     
  • 2.42, ViD (??), 12:01, 17/06/2004 [^] [ответить]    [к модератору]  
  • +/
    >Планируется ли дальнейшая поддержка патча/включение его в сам postfix? А то версия
    >2.1.0 уже вышла, баги правят.. С 2.0.x переходить придётся, а терять
    >такую функциональность очень не хочется..

    Будет, уже делаю.

     
  • 1.43, Андрей (??), 11:41, 22/06/2004 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Спасибо что делаете!!! Удачи..
     
  • 1.45, Аноним (45), 10:55, 04/08/2004 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ссылка недоступна. Где еще можно скачать это патч?
     
     
  • 2.46, aledin (ok), 16:47, 24/09/2004 [^] [ответить]    [к модератору]  
  • +/
    Очень хотелось бы получить в пользование данный патч. Ссылка и на самом деле недоступна. Может кто-нибудь поделится?
     
  • 1.47, Maxim Chirkov (ok), 13:09, 05/10/2004 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Копию патча можно скачать здесь
    ftp://ftp.opennet.ru/pub/net/mail/postfix_quota/
     
     
  • 2.48, Anna (??), 10:58, 25/10/2004 [^] [ответить]    [к модератору]  
  • +/
    Привет!
    Огромная благодарность за работу, все работает отлично.
    Но не давно один из пользователей, после того как не получил из-за переполнения важное письмо, спросил: "А нельзя-ли заранее предупредить?".
    Т.е. как только ящик наполняется, к примеру, на 95% посылать пользователю письмо с предупреждением о заполнении.
    Какие есть возможности решить этот вопрос?


     
     
  • 3.49, Crion (??), 16:51, 04/11/2004 [^] [ответить]    [к модератору]  
  • +/
    Привет!
    К сожелению postfix-2.1.5 не собрался после того как наложил патчь.
    smtpd_check.c In function 'check_rcpt_maps':
    smtpd_check.c:3815: 'argv' undeclared (first use in this function)
    smtpd_check.c:3815: (Each undeclared identifier is reported only once
    smtpd_check.c:3815:  for each function it appears in.)
    smtpd_check.c:3817:  'cpp' undeclared (first use in this function)
    smtpd_check.c:3819:  'stst_quota' undeclared (first use in this function)
    smtpd_check.c: In function 'smtpd_resolve_virt_alias':
    smtpd_check.c:3974: warning: assignment makes pointer from integer without a cast
    *** Error code 1
     
  • 1.50, serg_dsv (??), 14:18, 24/12/2004 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Прочитал Вашу статью по поводу квот в постфикс на http www opennet ru base pat... весь текст скрыт [показать]
     

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


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