Описание процесса настройки и патч для индивидуального квотирования почтовых ящиков пользователей, аккаунты которых хранятся в MySQL или PostgreSQL. Определение превышения квоты производится на "лету", не принимая тела сообщения (экономия трафика), но при этом и отправителю и получателю отправляется уведомление.URL: http://vitaliy.tdauto.ru/
Новость: http://www.opennet.me/opennews/art.shtml?num=3092
Коннект проходит на порт, а потом таймаут.
>Коннект проходит на порт, а потом таймаут.Таймаут после чего? сразу после коннекта? Патч включается только после
RCPT TO:
Устранил баг(смотри ниже), возможно причина была в нем... хотя вряд ли.
В любом случае по подробнее.
не ставится вместе с ssl патчем, без альясов не работает,
невозможно полностью отключить квоту для virtual - начинает жаловаться
fatal: bad string length (0 < 1):
virtual_quota_user_message =
Ясно, огромное спасибо.. сейчас поправлю.
>невозможно полностью отключить квоту для virtual - начинает >жаловаться
>fatal: bad string length (0 < 1):
Вот так:
virtual_quota_user_bounce = no
virtual_quota_user_message = /.../.../.../ваш_файл
сообщения не будет "fatal: bad string length (0 < 1):" и нотификаций не будет>не ставится вместе с ssl патчем.
Тут точнее какой ssl патч, какой postfix>без альясов не работает
Тоже уточните что не работает и без каких альясов?
Все, вот этот КОСЯК устранен. Теперь анализирует значение у этой эту строчки.
virtual_quota_user_message =
fatal: bad string length (0 < 1):>без альясов не работает
Вот на эту тему, я честно говоря, немного не могу представить в чем именно может быть трабл. Я там сделал так, что квота по альясам НИКАК не пересекается с основной работой кода postfix.
Насчет ssl: postfix 2.0.16 + tls патч pfixtls-0.8.16-2.0.16-0.9.7b
Что касается альсясов
postfix почемуто не проверял квоту если у юзера не было записи в virtual_alias_maps
>Насчет ssl: postfix 2.0.16 + tls патч pfixtls-0.8.16-2.0.16-0.9.7b
Сейчас как раз проверяю если что выложу дополнительный патч под такую конфигурацию, вероятнее всего решаемо, если tls ставить после... ну да сейчас выясню напищу.>postfix почемуто не проверял квоту если у юзера не было записи в
>virtual_alias_mapsТут ВСЕ правильно, я как раз и описывал эту ситуацию в статье по настройке. Возможно у этого юзера была запись в:
1. recipient_canonical_maps
2. canonical_maps
Да, еще внимательно на тему способа ресольва в той части описания где:
RCPT TO: <nomail@tdauto.ru>
550 <nomail@tdauto.ru>: User unknown in virtual mailbox table
Именно "...in virtual mailbox table"А альясы, дело в том, что все альясы ресольвить и квотировать смысла нет, к примеру, все что находится в alias_maps ресольвится postfix в другом месте, и посему дабы для патча сузить все возможные вариации конфигов и соответственно НЕ НАВРЕДИТЬ, ограничился квотой юзеров по virtual_alias_maps и virtual_mailbox_maps (причем из тех юзеров что есть в virtual_alias_maps, квота в конечном итоге, распространяется только на тех юзеров, аккаунты которых есть в virtual_mailbox_maps ибо корень квоты, произростает как раз из virtual_mailbox_maps там находятся истинные конечные потребители почты)...
Однако надо будет подумать, возможно все же есть смысл разобрать и другие варианты.
юзер был прописан ТОЛЬКО в virtual_mailbox_maps и почта ему корректно доставлялась.
Альясы как раз и не надо было квотировать т.к у юзера их и не было, но пока не прописал юзера в альясах - квота не проверялась.
Насчет tls - quota патч ставился как до так и после применения tls патча и postfix не собирался при любом варианте
>юзер был прописан ТОЛЬКО в virtual_mailbox_maps и почта ему корректно доставлялась.
>Альясы как раз и не надо было квотировать т.к у юзера их
>и не было, но пока не прописал юзера в альясах -
>квота не проверялась.
>Насчет tls - quota патч ставился как до так и после применения
>tls патча и postfix не собирался при любом вариантеС tls разобрался, tls патч знатно перепахивает smtpd.c и мои добавочные определения в некоторых местах "пролетают" но уже сделал... что ж сейчас попробую воспроизвести Вашу ситуацию, возможно и вправду найду косяк.
В ЛЮБОМ СЛУЧАЕ СПАСИБО за подсказки что у меня там не так, хочется же чтобы сие "детище" работало во всех ситуациях.
>>юзер был прописан ТОЛЬКО в virtual_mailbox_maps и почта ему корректно доставлялась.
>>Альясы как раз и не надо было квотировать т.к у юзера их
>>и не было, но пока не прописал юзера в альясах -
>>квота не проверялась.Похоже что подобное связано с представлением адресов в части доменного окончания, т.е. то что висит на альясах по определению приводятся к каноническому виду any@mydomain.com, а вот безальясники внутри постфикса могут проходить и как юзер any и как any@mydomain.com
Гммммм.... да мой bug однако, всенпременно исправимс.
Так, ну вроде взошло, должно работать по всякому, все выложил на сайте с исправлениями.HFSC - как Вас на сайте представить?
Хочу добавить строчку благодарности за помощь в исправлении багов.
Все собралось,пропатчилось но осталась одна небольшая проблема: патч не делает главного - не режет по превышению квоты
В таблице в поле квота для юзера стоит 1 байт, отсылаю ему кучу писем - в логах мускула видно что поле квота проверяется, однако никакой дальнейшей реакции нету
Так, ну что же... примерно часа через три залогирую патч очень подробно и выложу, и если конечно Вы не устали, мы все же разберемся с вашим случаем. Другого способа не вижу, у меня во всех случаях он к сожалению работает.
Проблема была в правах на 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 ?
>можно ли сделать что бы все операции с файлами производились от
>юзера:группы которые указаны в virtual_uid и virtual_gid ?Подумавши малость и прикинув что к чему пока правда в теории, думаю что можно.
Дело в том, что на три дочерних процесса - virtual, local и pipe в постфиксе можно посадить своего владельца отличного от mail_owner.
Из этих 3 процессов меня интересует только virtual, он то и ответственный за доставку мессаги, в maildir пользователя.
Можно вызывать его из smtpd, заставлять смотреть объем директории юзера и в случае превышения, отдавать ему на доставку буфер со служебной мессагой а в smtpd давать отбой, эта схема должна нормально сработать и тогда virtual_uid и virtual_gid актуальности не потеряют. Есть конечно ньюанс связанный с форматом мессаги... у меня добавляются строчки в уже имеющуюся, а virtual, если ему не сказать что это служебное, будет на каждый отбой творить уникальный файл. Но и это победимо Хех.. было бы время :)
А зачем ?
Ааа вон чего... Уффф ясно :) функция в патче check_dirsize(char * maildir) выполняется от имени smtpd который соответственно работает под юзером postfix в результате всегда честно возвращает размер maildir = 0 т.к. ей ничего не разрешают смотреть.
Так, во первых залогировать это стоит, плюс сейчас еще опишу на сайте эту ситуацию.
Ну и подумаю еще как разрулить сей конфликт.P.S.
HFSC :) вы чертовски терпеливый и желающий разобраться человек, сенкс :)
Сделал все как написано - игнорирует квоту. Патч лепил patch -p0 < postfix2.0pvq . Без опции -p0 не патчится. Пробовал указать в настройках mail_limit.cf несуществующее поле квоты - ругается в логах, т.е. все-таки смотрит его. Никаких доп. файлов в maildir'e не создает. Используется postfix-2.0.16+sasl2+mysql. В чем может быть проблема?
>mail_limit.cf несуществующее поле квоты - ругается в логах, т.е. все-таки смотрит
>его. Никаких доп. файлов в maildir'e не создает. Используется postfix-2.0.16+sasl2+mysql. В
>чем может быть проблема?Такая связка 100% рабочая и судя по симпомам, может быть то, что у smtpd нет доступа к maildir юзеров. Посмотри права на директорию virtual_maildir_base. Если она не доступна для smtpd то он как раз будет игнорировать, т.е. всегада давать размер maildir = 0... типа у юзера ничего в maildir нет.
А лучше main.cf дай глянуть.
>Такая связка 100% рабочая и судя по симпомам, может быть то, что
>у smtpd нет доступа к maildir юзеров. Посмотри права на директорию
>virtual_maildir_base. Если она не доступна для smtpd то он как раз
>будет игнорировать, т.е. всегада давать размер maildir = 0... типа у
>юзера ничего в maildir нет.
>А лучше main.cf дай глянуть.main.cf:
# Virtual quota
virtual_mailbox_limit_maps = mysql:/etc/postfix/mail_limit.cf
virtual_quota_user_bounce = yes
virtual_quota_user_message = /etc/postfix/message.cf
virtual_quota_user_message_limit = 2048mail_owner = postfix
default_privs = nobodybroken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
transport_maps = mysql:/etc/postfix/transport.cf
virtual_mailbox_base = /
virtual_uid_maps = mysql:/etc/postfix/ids.cf
virtual_gid_maps = mysql:/etc/postfix/gids.cf
virtual_mailbox_maps = mysql:/etc/postfix/aliases.cf
virtual_maps = mysql:/etc/postfix/remote_aliases.cf
relay_domains = $transport_maps
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,check_relay_domains
disable_vrfy_command = yes
smtp_sasl_security_options = noanonymous
#ls -l /var/spool/
...
drwxrwx--- 25 postfix mail 4096 Nov 23 18:44 vmail
...#ls -l /var/spool/vmail
...
drwx------ 8 1000 mail 4096 Aug 22 11:46 find-it.ru_sasha
...
Пытался различные чмоды делать onwer/group менять, полный доступ делал.И еще, когда пытаюсь отправить почту на заведомо несуществующий адрес, он не ругается как сказано у вас на сайте.
на всякий случай строчка из БД:
uid gid alias maildir password md quota
1000 12 sasha@find-it.ru find-it.ru_sasha/ ***** /var/spool/vmail/find-it.ru_sasha/ 10
Сегодня сооружу нечто подобное, гляну, скажу.
>Описание процесса настройки и патч для индивидуального квотирования почтовых ящиков пользователей, аккаунты
>которых хранятся в MySQL или PostgreSQL. Определение превышения квоты производится
>на "лету", не принимая тела сообщения (экономия трафика), но при этом
>и отправителю и получателю отправляется уведомление.
>
>URL: http://vitaliy.tdauto.ru/
>Новость: http://www.opennet.me/opennews/art.shtml?num=3092Вроде бы все нормально, но почему почта проходит , правда не ложится в ящик при превышении квоты,нет сообщений о превышении квоты пользователям!
>Вроде бы все нормально, но почему почта проходит , правда не
>ложится в ящик при превышении квоты,нет сообщений о превышении квоты пользователям!
>Проходит до mailq?
Логи 1 соединения с ключем в master.sfg smtpd -v и main.cfg на мыло мне пжалса. Иначе ничего толком не скажу, слишком много вариантов.
Идея замечательная и реализация тоже, пробовал для связки Postfix+sasl+MySQL+courier-imap, чего то не покатила, никакой реакции, всё работало как работало, в логах тоже ничего, прибываю в раздумьях.
>Идея замечательная и реализация тоже, пробовал для связки Postfix+sasl+MySQL+courier-imap, чего то не
>покатила, никакой реакции, всё работало как работало, в логах тоже ничего,
>прибываю в раздумьях.логи smtpd -v (т.е. в расширенном варианте), почти уверен что там просто проблема с владельцем maildir.
>
>логи smtpd -v (т.е. в расширенном варианте), почти уверен что там просто
>проблема с владельцем maildir.Логи смотрел, ничего нового не увидел, почта на сервак падает, в директорию юзера не падает, остальное всё без изменений
Конфиг следующий...
virtual_mailbox_base = /data/vmail
transport_maps = mysql:/etc/postfix/sql/transport.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/users.cf
virtual_alias_maps = mysql:/etc/postfix/sql/aliases.cf
virtual_uid_maps = mysql:/etc/postfix/sql/uids.cf
virtual_gid_maps = mysql:/etc/postfix/sql/gids.cfrelocated_maps = mysql:/etc/postfix/sql/relocated.cf
virtual_maps = mysql:/etc/postfix/sql/virtual.cflocal_recipient_maps = $virtual_mailbox_maps $virtual_maps $transport_maps
virtual_mailbox_limit_maps = mysql:/etc/postfix/sql/limit.cf
virtual_quota_user_bounce = yes
virtual_quota_user_message = /etc/postfix/sql/message_limit.txt
virtual_quota_user_message_limit = 2048
...
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
mydestination = $myhostname, localhost.$mydomain
relay_domains = $transport_maps
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP $mail_name
...
права соответственно следующие
/data/vmail
drwxrwx--- 3 postfix postdrop 4096 Dec 10 13:30 vmail
>права соответственно следующие
>/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
По ходу, у Вас определена локальная доставка и квота не проверяется.
2 VID: Вообще, думаю было-бы неплохо если бы Вы поместили полный пример рабочих конфигураций файлов main.cf, master.cf и т.д. Пытаюсь настраивать как описано Вами, квота в mysql проверяется, но служебный файл не создаётся. Права на virtual_mailbox_base соответсвуют mail_owner. Да ещё, как по расширенному логу smtpd -v определить работу патча?
>2 VID: Вообще, думаю было-бы неплохо если бы Вы поместили полный пример
>рабочих конфигураций файлов main.cf, master.cf и т.д. Пытаюсь настраивать как описано
>Вами, квота в mysql проверяется, но служебный файл не создаётся.
>Права на virtual_mailbox_base соответсвуют mail_owner. Да ещё, как по расширенному логу
>smtpd -v определить работу патча?
Ок я думаю это хорошая идея, выставлю на сайте свой конфиг будет явно попроще. А то и в самом деле существует несколько десятков вариантов конфигураций и возможно все же есть свои тонкости.
Поддерживаю всё выше сказанное по поводу посмотреть рабочую конфигурацию, кстати пока работаю на птче http://web.onda.com.br/nadal/, всё ничего, но только сообщения валятся отправителю а не получателю...
>Поддерживаю всё выше сказанное по поводу посмотреть рабочую конфигурацию, кстати пока работаю
>на птче http://web.onda.com.br/nadal/, всё ничего, но только сообщения валятся отправителю а
>не получателю..
Сдаюсь :) ниже конфиги tls/sasl можно не учитывать
Вот master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
old-cyrus unix - n n - - pipe
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
cyrus unix - n n - - pipe
user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
-------------------------------------------------------------------------
Вот main cf:queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
default_privs = nobody
myorigin = $mydomain
unknown_local_recipient_reject_code = 450
maps_rbl_reject_code = 554
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject_unauth_destination,
reject_rbl_client list.dsbl.org,
reject_rbl_client relays.ordb.org,
reject_rbl_client dynablock.wirehub.net,
reject_rbl_client blackholes.wirehub.net,
reject_rbl_client dnsbl.njabl.orgsmtpd_sender_restrictions = permit_mynetworks,
reject_unknown_sender_domain,
reject_non_fqdn_sendermessage_size_limit = 2048000
qmgr_message_active_limit = 200
qmgr_message_recipient_limit = 200
bounce_size_limit = 5000
smtpd_recipient_limit = 100
strict_rfc821_envelopes = yestransport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
virtual_mailbox_base = /var/mail/virtual
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cf
virtual_uid_maps = mysql:/usr/local/etc/postfix/sql/uids.cf
virtual_gid_maps = mysql:/usr/local/etc/postfix/sql/gids.cfrelay_domains = $transport_maps
relay_recipient_maps = $virtual_mailbox_maps
virtual_mailbox_domains = $transport_mapssmtpd_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_use_tls = yes
smtp_tls_key_file = /usr/local/etc/postfix/sql/pop3d.pem
smtp_tls_cert_file = $smtp_tls_key_file
smtp_tls_CAfile = $smtp_tls_key_file
smtp_tls_note_starttls_offer = yes
smtpd_tls_auth_only = yes
smtpd_use_tls = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandomsmtpd_tls_key_file = /usr/local/etc/postfix/sql/pop3d.pem
smtpd_tls_cert_file = $smtpd_tls_key_file
smtpd_tls_CAfile = $smtpd_tls_key_filevirtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/sql/mail_limit.cf
virtual_quota_user_bounce = yes
virtual_quota_user_message = /usr/local/etc/postfix/sql/message.cf
virtual_quota_user_message_limit = 4096
mynetworks = 192.168.31.0/24 127.0.0.0/8alias_maps = hash:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
> Сдаюсь :) ниже конфиги 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 решил все проблемы.
А у кого-нибудь в рабочей конфигурации присутствует в таблице записть типа subdomain.domain smtp:192.168.1.2?
это к вопросу об MX записях.
Потому как у меня чего-то не работает... Хм...
Привет!Если ты сюда еще заглядываешь, то хочется попросить добавить еще одну проверку (если это не сложно). Часто вместе с MAIL FROM приходит сразу и размер доставляемого сообщения в виде:
MAIL FROM: <user@some.net> SIZE=1024
RCPT TO: <...>
Так вот было бы просто замечательно если б это значение на этой-же стадии суммировалось с текущим размером почтового ящика и в случае превышения
заданной квоты тут-же вымылался отлуп. На сегодня мы принимаем любую почту, если ящик не переполнен и только после физического переполнения
шлем отлупы.ps: огромное спасибо за патч. Почти без напильника накатил на 2.0.19
>Привет!
>
>Если ты сюда еще заглядываешь, то хочется попросить добавить еще одну проверку
>(если это не сложно). Часто вместе с MAIL FROM приходит сразу
>и размер доставляемого сообщения в виде:
>MAIL FROM: <user@some.net> SIZE=1024
>RCPT TO: <...>
>Так вот было бы просто замечательно если б это значение на этой-же
>стадии суммировалось с текущим размером почтового ящика и в случае >превышения...В начале оно так и было :) однако потестировав, пришел к выводу что SIZE в мессагах, поле мягко говоря необязательное, а порой даже заведомо обманчивое и строить квоту на значении этого поля, как я понял, не есть хорошо.
В постфиксе фактически рализовано 2 алгоритма контроля превышения размера принимаемого сообщения:
1. На основе SIZE, срабатывает в 10-15% случаев, это я назвал "белая" почта с нормальных МТА когда SIZE=что_то и соответственно что_то=реальному_размеру мессаги.
2. На основе контроля буфера приема, сие ловит соответственно "серую" и "черную" почту, где SIZE=0 или заведомо искажено(т.е. локальные почтовые клиенты, спам машины, левые/простенькие МТА) тут уже гораздо более жесткое и эффективное средство, т.к. подсчитывается реальный обьем принятой информации и если он больше, то отсекается, правда я не очень понял идею разработчика сперва ВСЕ принять, а потом подсчитать и если больше отбросить, ну тут я не берусь судить, может есть какие подводные камни.Так вот, все "горе" :) состоит в том, что юзеру не получившему 2Мб важного письма и имевшему 1.99Мб свободных, до жути обидно :), тут чисто психологически.. ибо после того, он еще спокойно получил 100 спамерских мессаг по 10 кб :)
Хотя конечно и это все можно разрулить и расписать... но на сколько это актуально... я пока еще честно говоря не знаю.
Планируется ли дальнейшая поддержка патча/включение его в сам postfix? А то версия 2.1.0 уже вышла, баги правят.. С 2.0.x переходить придётся, а терять такую функциональность очень не хочется..
>Планируется ли дальнейшая поддержка патча/включение его в сам postfix? А то версия
>2.1.0 уже вышла, баги правят.. С 2.0.x переходить придётся, а терять
>такую функциональность очень не хочется..Будет, уже делаю.
Спасибо что делаете!!! Удачи..
Ссылка недоступна. Где еще можно скачать это патч?
Очень хотелось бы получить в пользование данный патч. Ссылка и на самом деле недоступна. Может кто-нибудь поделится?
Копию патча можно скачать здесь
ftp://ftp.opennet.ru/pub/net/mail/postfix_quota/
Привет!
Огромная благодарность за работу, все работает отлично.
Но не давно один из пользователей, после того как не получил из-за переполнения важное письмо, спросил: "А нельзя-ли заранее предупредить?".
Т.е. как только ящик наполняется, к примеру, на 95% посылать пользователю письмо с предупреждением о заполнении.
Какие есть возможности решить этот вопрос?
Привет!
К сожелению 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
Прочитал Вашу статью по поводу квот в постфикс на http://www.opennet.me/base/patch/postfix_peruser_quote.txt.htmlНаложил патч. Скомрилил. Все ОК.
Но вот не отрабатывается условие
bash-2.05b# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 kremenchug.in.ua ESMTP Postfix (2.0.20)
helo kremenchug.in.ua
250 kremenchug.in.ua
mail from: admin@kremenchug.in.ua
250 Ok
rcpt to: qwer@kremenchug.in.ua
450 <qwer@kremenchug.in.ua>: User unknown in local recipient tableНемогу понять в чем проблема.
Вот мои конфиги
bash-2.05b# cat main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
default_privs = nobody
myhostname = kremenchug.in.ua
mydomain = kremenchug.in.ua
myorigin = $mydomain
unknown_local_recipient_reject_code = 450
#maps_rbl_reject_code = 554
#smtpd_recipient_restrictions =
#permit_sasl_authenticated,
#reject_unauth_destination,
#reject_rbl_client list.dsbl.org,
#reject_rbl_client relays.ordb.org,
#reject_rbl_client dynablock.wirehub.net,
#reject_rbl_client blackholes.wirehub.net,
#reject_rbl_client dnsbl.njabl.org#smtpd_sender_restrictions = permit_mynetworks,
#reject_unknown_sender_domain,
#reject_non_fqdn_sender#message_size_limit = 2048000
#qmgr_message_active_limit = 200
#qmgr_message_recipient_limit = 200
#bounce_size_limit = 5000
#smtpd_recipient_limit = 100
#strict_rfc821_envelopes = yestransport_maps = mysql:/usr/local/etc/postfix/transport.cf
virtual_mailbox_base = /spool/mail/
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virt.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/virtual.cf
virtual_uid_maps = mysql:/usr/local/etc/postfix/uids.cf
virtual_gid_maps = mysql:/usr/local/etc/postfix/gids.cf#virtual_maps = mysql:/usr/local/etc/postfix/virtual.cf
relay_domains = $transport_maps
relay_recipient_maps = $virtual_mailbox_maps
virtual_mailbox_domains = $transport_maps
virtual_transport = virtual#recipient_canonical_maps = $virtual_mailbox_maps
#local_transport = virtual
#local_recipient_maps = $virtual_mailbox_mapslocal_transport = virtual
#local_recipient_maps =
local_recipient_maps = $virtual_mailbox_maps#smtpd_sasl_auth_enable = yes
#smtp_sasl_security_options = noanonymous
#broken_sasl_auth_clients = yes#smtp_use_tls = yes
#smtp_tls_key_file = /usr/local/etc/postfix/sql/pop3d.pem
#smtp_tls_cert_file = $smtp_tls_key_file
#smtp_tls_CAfile = $smtp_tls_key_file
#smtp_tls_note_starttls_offer = yes
#smtpd_tls_auth_only = yes
#smtpd_use_tls = yes
#smtpd_tls_loglevel = 1
#smtpd_tls_received_header = yes
#smtpd_tls_session_cache_timeout = 3600s
#tls_random_source = dev:/dev/urandom#smtpd_tls_key_file = /usr/local/etc/postfix/sql/pop3d.pem
#smtpd_tls_cert_file = $smtpd_tls_key_file
#smtpd_tls_CAfile = $smtpd_tls_key_filevirtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mail_limit.cf
virtual_quota_user_bounce = yes
virtual_quota_user_message = /usr/local/etc/postfix/message.cf
virtual_quota_user_message_limit = 4096mynetworks = 193.111.189.16/28 192.168.0.0/16 127.0.0.0/8
alias_maps = hash:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
-------------------------------------------------bash-2.05b# cat master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
old-cyrus unix - n n - - pipe
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
cyrus unix - n n - - pipe
user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user} uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
-------------------------------------------------------------------------bash-2.05b#Незнаю как заставить постфикс вместо 450 <qwer@kremenchug.in.ua>: User unknown in local recipient table
как сказано у Вас550 <nomail@tdauto.ru>: User unknown in virtual mailbox table
Подскажите плиз в чем проблема?