вопрос следующий:
стоит Postfix в режиме before-queue.
Письмо получается, проверяется dspam, clamav, отдается назад постфиксу и доставляется пользователям. Проверка на наличие пользователя работает аж на 3-и стадии!!
т.е. почта принялась, проверилась dspam, потом clamav, потом когда отдалась назад постфиксу проверилась на наличие пользователя и в зависимости от результата послали отлуп или приняли почту. Вопрос как сделать чтоб чтоб проверка на наличие пользователя прошла при первой стадии ? до скармливания его dspam & clamd ????
>вопрос следующий:
>стоит Postfix в режиме before-queue.
>Письмо получается, проверяется dspam, clamav, отдается назад постфиксу и доставляется пользователям. Проверка
>на наличие пользователя работает аж на 3-и стадии!!
>т.е. почта принялась, проверилась dspam, потом clamav, потом когда отдалась назад постфиксу
>проверилась на наличие пользователя и в зависимости от результата послали отлуп
>или приняли почту. Вопрос как сделать чтоб чтоб проверка на наличие
>пользователя прошла при первой стадии ? до скармливания его dspam &
>clamd ????Посмотреть master.cf, main.cf, почитать на postfix.org о before-queue filters, after-queue-filters, подумать...
собственно, имеет смысл поставить clamav в before...Спам - по желанию....
>
>Посмотреть master.cf, main.cf, почитать на postfix.org о before-queue filters, after-queue-filters, подумать...
>собственно, имеет смысл поставить clamav в before...Спам - по желанию....очень глубокомысленное замечание.
наверное я все посмотрел.тема не раскрыта ;)
>тема не раскрыта ;)
И не будет, пока не покажите postconf -n и master.cf
>>тема не раскрыта ;)
>И не будет, пока не покажите postconf -n и master.cfда не вопрос!
root@venus~> postconf -n
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/local/sbin
config_directory = /usr/local/etc/postfix
daemon_directory = /usr/local/libexec/postfix
debug_peer_level = 3
default_privs = nobody
html_directory = no
local_recipient_maps = $virtual_mailbox_maps $virtual_maps $transport_maps
mail_owner = postfix
mail_spool_directory = /usr/local/var/mail
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
maps_rbl_reject_code = 554
mynetworks = 127.0.0.0/8
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
relay_domains = $transport_maps
sample_directory = /usr/local/etc/postfix
root@venus~> postconf -n
setgid_group = maildrop
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = $smtp_tls_key_file
smtp_tls_cert_file = $smtp_tls_key_file
smtp_tls_key_file = /usr/local/share/courier-imap/pop3d.pem
smtp_tls_note_starttls_offer = yes
smtp_use_tls = yes
smtpd_banner = $myhostname mail sterver
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, rej
ect_unauth_destination, reject_rbl_client list.dsbl.org, reject_rbl_client
relays.ordb.org, reject_rbl_client dynablock.wirehub.net, reject_rbl_cli
ent blackholes.wirehub.net, reject_rbl_client dnsbl.njabl.org, reject_u
nknown_sender_domain, reject_unauth_pipelining, reject_unknown_recipient_domain,
reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_non_fqdn_hostname
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_tls_CAfile = $smtpd_tls_key_file
smtpd_tls_cert_file = $smtpd_tls_key_file
smtpd_tls_key_file = /usr/local/share/courier-imap/pop3d.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cf
virtual_gid_maps = mysql:/usr/local/etc/postfix/sql/gids.cf
virtual_mailbox_base = /usr/local/var/mail/virtual
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
virtual_uid_maps = mysql:/usr/local/etc/postfix/sql/uids.cf
>>>тема не раскрыта ;)
>>И не будет, пока не покажите postconf -n и master.cf
>
>да не вопрос!smtp inet n - n - 20 smtpd
-o smtpd_proxy_filter=127.0.0.1:20024
-o smtpd_client_connection_count_limit=10#
#
#
127.0.0.1:20025 inet n - n - - smtpd
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=
-o mynetworks=127.0.0.0/8
-o receive_override_options=no_unknown_recipient_checks
На какой адрес отправляете? Логи?
>На какой адрес отправляете? Логи?да я же говорю, например я отправляю на левый аддр но в моем домене.
письмо обрабатывается clamav dspam и только потом постфикс дает отлуп что такого пользователя нет.а мне бы хотелось все сделат наоборот :)
проверить на наличие пользователя а потом уже проверять.
>>На какой адрес отправляете? Логи?
>
>да я же говорю, например я отправляю на левый аддр но в
>моем домене.
>письмо обрабатывается clamav dspam и только потом постфикс дает отлуп что такого
>пользователя нет.
>
>а мне бы хотелось все сделат наоборот :)
>проверить на наличие пользователя а потом уже проверять.из конфига постфикса
# REJECTING UNKNOWN RELAY USERS
#
# The relay_recipient_maps parameter specifies optional lookup tables
# with all addresses in the domains that match $relay_domains.
#
# If this parameter is defined, then the SMTP server will reject
# mail for unknown relay users. This feature is off by default.
#
# The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify an @domain.tld wild-card, or specify
# a user@domain.tld address.
#
#relay_recipient_maps = hash:/etc/postfix/relay_recipients
># REJECTING UNKNOWN RELAY USERS
>#сейчас попробую задружить с mysql
>>>На какой адрес отправляете? Логи?
>>
>>да я же говорю, например я отправляю на левый аддр но в
>>моем домене.
>>письмо обрабатывается clamav dspam и только потом постфикс дает отлуп что такого
>>пользователя нет.
>>
>>а мне бы хотелось все сделат наоборот :)
>>проверить на наличие пользователя а потом уже проверять.
>
>из конфига постфикса
># REJECTING UNKNOWN RELAY USERS
>#
хотя у меня же обьявлено $virtual_alias_maps
>>>На какой адрес отправляете? Логи?
>>
>>да я же говорю, например я отправляю на левый аддр но в
>>моем домене.
>>письмо обрабатывается clamav dspam и только потом постфикс дает отлуп что такого
>>пользователя нет.
>>
>>а мне бы хотелось все сделат наоборот :)
>>проверить на наличие пользователя а потом уже проверять.
>
>из конфига постфикса
># REJECTING UNKNOWN RELAY USERS
>#делаем
local_recipient_maps = mysql:/usr/local/etc/postfix/sql/users.cf# less users.cf
user = mailer
password = XXXXXXXX
dbname = mail
table = users
select_field = maildir
where_field = login
hosts = localhostэффект не достигнут.
>>>>На какой адрес отправляете? Логи?
>>>
>>>да я же говорю, например я отправляю на левый аддр но в
>>>моем домене.
>>>письмо обрабатывается clamav dspam и только потом постфикс дает отлуп что такого
>>>пользователя нет.
>>>
>>>а мне бы хотелось все сделат наоборот :)
>>>проверить на наличие пользователя а потом уже проверять.
>>
>>из конфига постфикса
>># REJECTING UNKNOWN RELAY USERS
>>#
>
>делаем
>local_recipient_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>
># less users.cf
>user = mailer
>password = XXXXXXXX
>dbname = mail
>table = users
>select_field = maildir
>where_field = login
>hosts = localhost
>
>
>
>эффект не достигнут.вот лог
http://pastebin.com/605002чтоб не мусорить в форуме.
>local_recipient_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>эффект не достигнут.
Да потому что почта-то числится virtual!!!!
Покажите содержимое таблицы, указанной в
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>Покажите содержимое таблицы, указанной в
>virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cfuser = mailer
password = XXXXXXX
dbname = mail
table = users
select_field = maildir
where_field = login
hosts = localhost
ТАБЛИЦЫ, а не параметров соединения с БД.
>ТАБЛИЦЫ, а не параметров соединения с БД.users
Поле Тип Ноль По умолчанию
login varchar(255) Да
password varchar(255) Да
maildir varchar(255) Да
expired char(1) Да 0
antivirus char(1) Да 1
antispam char(1) Да 1
comment text Да NULL
Содержимое таблицы где?
>ТАБЛИЦЫ, а не параметров соединения с БД.ira@vs.kiev.ua | 5KytgtgtgtJc7317o | vs.kiev.ua/ira/ | 0 | 1 | 1
А теперь таблицу, указанную в
transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
>А теперь таблицу, указанную в
>transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cfmysql> SELECT * FROM `transport` LIMIT 0 , 30;
+---------------+-----------+---------+
| domain | transport | comment |
+---------------+-----------+---------+
| vs.kiev.ua | virtual: | NULL |
+---------------+-----------+---------+
2 rows in set (0.01 sec)
Верните следующие параметры в default (закомментируйте) и перезапустите postfix
local_recipient_maps
relay_domains
transport_maps
Покажите еще содержимое таблицы
virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cf
>Верните следующие параметры в default (закомментируйте) и перезапустите postfix
>local_recipient_maps
>relay_domains
>transport_maps
>Покажите еще содержимое таблицы
>virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cf
SELECT * FROM `aliases` LIMIT 0 , 30;
+---------------------------+--------------------+---------+
| alias | rcpt | comment |
+---------------------------+--------------------+---------+
| root@vs.kiev.ua | vvs@vs.kiev.ua | NULL |
| mailer-daemon@vs.kiev.ua | vvs@vs.kiev.ua | NULL |
| postmaster@vs.kiev.ua | vvs@vs.kiev.ua | NULL |
| hostmaster@vs.kiev.ua | vvs@vs.kiev.ua | NULL |
>Верните следующие параметры в default (закомментируйте) и перезапустите postfix
>local_recipient_maps
>relay_domains
>transport_maps
>Покажите еще содержимое таблицы
>virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cfу меня
transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
relay_domains = $transport_maps
>у меня
>transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
>relay_domains = $transport_maps
Делайте, что Вам говорят. Верните следующие параметры в default (закомментируйте) и перезапустите postfix
local_recipient_maps
relay_domains
transport_maps
>>у меня
>>transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
>>relay_domains = $transport_maps
>Делайте, что Вам говорят. Верните следующие параметры в default (закомментируйте) и перезапустите
>postfix
>local_recipient_maps
>relay_domains
>transport_maps
Mar 16 11:24:16 venus postfix/smtpd[25200]: connect from nproxy.gmail.com[64.233.182.
195]
Mar 16 11:24:16 venus postfix/smtpd[25200]: NOQUEUE: reject: RCPT from nproxy.gmail.c
om[64.233.182.195]: 554 <vvs@vs.kiev.ua>: Relay access denied; from=<vit.slipchenko@g
mail.com> to=<vvs@vs.kiev.ua> proto=ESMTP helo=<nproxy.gmail.com>
Mar 16 11:24:16 venus postfix/smtpd[25200]: disconnect from nproxy.gmail.com[64.233.1
82.195]нифига не принимаем.
Добавьте в main.cf:
virtual_mailbox_domains = vs.kiev.ua
>Добавьте в main.cf:
>virtual_mailbox_domains = vs.kiev.ua
а остальное закоментировать?
>а остальное закоментировать?
Только то, что я уже указывал.
>>а остальное закоментировать?
>Только то, что я уже указывал.
так нормально для vs.kiev.ua
только виртуальные домены конечно же не работают.
>так нормально для vs.kiev.ua
>только виртуальные домены конечно же не работают.
Подробнее. Для каких доменов работает, для каких нет, для каких должно.
>>так нормально для vs.kiev.ua
>>только виртуальные домены конечно же не работают.
>Подробнее. Для каких доменов работает, для каких нет, для каких должно.
вся та конструкция (повторю ее )
transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
relay_domains = $transport_maps
local_recipient_maps = $virtual_mailbox_maps $virtual_maps $transport_maps
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cfбыла навернута чтоб жили два домена
vs.kiev.ua
rusyn.kiev.ua
ну и и другие виртуальные домены если они будут нужны.
чтоб все жило в мускуле и т.д.если покоментировать
#local_recipient_maps
#relay_domains
#transport_mapsи добавить
virtual_mailbox_domains = vs.kiev.ua rusyn.kiev.uaто все конечно работает как надо.
но тогда теряется смысл мускула и т.д.
>если покоментировать
>#local_recipient_maps
>#relay_domains
>#transport_maps
>
>и добавить
>virtual_mailbox_domains = vs.kiev.ua rusyn.kiev.ua
>
>то все конечно работает как надо.
>
>но тогда теряется смысл мускула и т.д.
Я же писал... local recipient maps, как и ясно из названия, действуют только для локального домена. А для контроля виртуального домена используйте relay recipient maps, которые надо определить как = $virtual_mailbox_maps, $virtual_alias_maps
>только для локального домена. А для контроля виртуального домена используйте relay
>recipient maps, которые надо определить как = $virtual_mailbox_maps, $virtual_alias_maps
Не надо путать relay domain class и virtual mailbox domain class.
>>только для локального домена. А для контроля виртуального домена используйте relay
>>recipient maps, которые надо определить как = $virtual_mailbox_maps, $virtual_alias_maps
>Не надо путать relay domain class и virtual mailbox domain class.
>
а можно более конкретно относительно моего случая ?
что поправить чтоб работало как мне надо?
а то я уже запутался.
>а можно более конкретно относительно моего случая ?
>что поправить чтоб работало как мне надо?
>а то я уже запутался.
Проблема в том, что для virtual_mailbox_domains нужно выделить домен из адреса user@domain.ru. SQL-запрос возвращает целое значение поля (user@domain.ru) и я не представляю, как из него можно "выдернуть" только domain.ru. Как вариант, добавить в таблицу поле virtual_domains и в нем указывать домены.
>>а можно более конкретно относительно моего случая ?
>>что поправить чтоб работало как мне надо?
>>а то я уже запутался.
>Проблема в том, что для virtual_mailbox_domains нужно выделить домен из адреса user@domain.ru.
>SQL-запрос возвращает целое значение поля (user@domain.ru) и я не представляю, как
>из него можно "выдернуть" только domain.ru. Как вариант, добавить в таблицу
>поле virtual_domains и в нем указывать домены.да вроде уже получилось все.
>да вроде уже получилось все.
Если есть возможность, то попробуйте такmain.cf:
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/sql/virtual_domains.cfvirtual_domains.cf:
user = mailer
password = XXXXXXX
dbname = mail
table = users
select_field = login
where_field = login
hosts = localhost
>>да вроде уже получилось все.
>Если есть возможность, то попробуйте так
>
>main.cf:
>virtual_mailbox_domains = mysql:/usr/local/etc/postfix/sql/virtual_domains.cf
>
>virtual_domains.cf:
>user = mailer
>password = XXXXXXX
>dbname = mail
>table = users
>select_field = login
>where_field = login
>hosts = localhost
так не работает.
>>только для локального домена. А для контроля виртуального домена используйте relay
>>recipient maps, которые надо определить как = $virtual_mailbox_maps, $virtual_alias_maps
>Не надо путать relay domain class и virtual mailbox domain class.
>
вроде победил.
>>если покоментировать
>>#local_recipient_maps
>>#relay_domains
>>#transport_maps
>>
>>и добавить
>>virtual_mailbox_domains = vs.kiev.ua rusyn.kiev.ua
>>
>>то все конечно работает как надо.
>>
>>но тогда теряется смысл мускула и т.д.
>
>
>Я же писал... local recipient maps, как и ясно из названия, действуют
>только для локального домена. А для контроля виртуального домена используйте relay
>recipient maps, которые надо определить как = $virtual_mailbox_maps, $virtual_alias_mapsт.е.
если я пропишу
relay_recipient_maps = mysql:/usr/local/etc/postfix/sql/users.cf
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cfто должно быть все ок ?
>если я пропишу
>relay_recipient_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>
>то должно быть все ок ?
Вроде, да... На 100 процентов не уверен, но люди, которым я давал в похожей ситуации такой совет, утихли и больше не обращаются...
Только правильнееvirtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
relay_recipient_maps = $virtual_mailbox_maps, $virtual_alias_maps
>>если я пропишу
>>relay_recipient_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>>virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>>
>>то должно быть все ок ?
>Вроде, да... На 100 процентов не уверен, но люди, которым я давал
>в похожей ситуации такой совет, утихли и больше не обращаются...
>Только правильнее
>
>virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
>relay_recipient_maps = $virtual_mailbox_maps, $virtual_alias_maps
ну почти так и сделал.
СПАСИБО за помощь.всем спасибо.
>А теперь таблицу, указанную в
>transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cfuser = mailer
password = XXXXXXX
dbname = mail
table = transport
select_field = transport
where_field = domain
hosts = localhost