Последние сообщения

Страницы: 1 ... 7 8 [9] 10
81
Общий раздел / Re: Postfix + ldap
« Последний ответ от egor 26 Май 2020, 02:02:25 »
По вопросу с отсылками (referrals). Теоретически, поисковый запрос LDAP можно заставить автоматически следовать по возвращаемым отсылкам и в настройках LDAP-карт Postfix предусмотрена опция chase_referrals:
chase_referrals = yesНо проблема в том, что переход по отсылкам происходит анонимно, а AD требует аутентификации, поэтому фактически в случае с AD  переход по отсылкам не выполняется.

То есть напрямую средствами Postfix задачу с такой рекурсией в AD решить не удастся. Можно в качестве обходного пути попытаться поднять прокси-каталог на OpenLDAP с бэкендом slapd-meta, который "склеит" AD-шные служебные каталоги в один, и перенаправить Postfix на него. Но стоит ли в данном случае игра свеч?

Егор
82
Общий раздел / Re: Postfix + ldap
« Последний ответ от egor 25 Май 2020, 05:32:53 »
Простите, что не сразу отвечаю -- дел очень много, даже в выходные =( .

По поводу virtual_transport я посмотрел в документации postfix -- всё-таки это не про транспортировку почты, а про раскладку писем в ящики. За транспортировку в чистом виде отвечает как раз transport_maps, так что всё верно. Поэтому предлагаю сделать так:
transport_maps = ldap:/usr/local/etc/postfix/transport/ldap_transport_map.cf, hash:/usr/local/etc/postfix/transport

А virtual_transport закомментировать вообще.

По второму вопросу посмотрю чуть позже.
83
Общий раздел / Re: Postfix + ldap
« Последний ответ от JohnRD 22 Май 2020, 18:05:39 »
Egor добрый день

так и не смог я избавиться от
transport_maps

оставляю
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf
лог такой
May 22 16:42:57 dom3-gw postfix/qmgr[36274]: warning: connect to transport private/ldap: No such file or directory
May 22 16:42:57 dom3-gw postfix/error[36282]: 2D2676556231: to=<john3@dom3.domain.ru>, relay=none, delay=0.17, delays=0.16/0/0/0.01, dsn=4.3.0, status=deferred (mail transport unavailable)

оставляю
virtual_transport = hash:/usr/local/etc/postfix/transport
лог такой
May 22 17:12:38 dom3-gw postfix/qmgr[36757]: warning: connect to transport private/hash: No such file or directory
May 22 17:12:38 dom3-gw postfix/error[36759]: 778B76556233: to=<john3@dom3.domain.ru>, relay=none, delay=0.28, delays=0.28/0/0/0, dsn=4.3.0, status=deferred (mail transport unavailable)
судя по private/hash и private/ldap  то он видит строку и разницу в ней

убираю обе
transport_maps  = hash:/usr/local/etc/postfix/transportvirtual_transport = hash:/usr/local/etc/postfix/transportвижу такое
May 22 17:21:45 dom3-gw postfix/virtual[36885]: fatal: bad string length 0 < 1: virtual_mailbox_base =
May 22 17:21:46 dom3-gw postfix/master[36876]: warning: process /usr/local/libexec/postfix/virtual pid 36885 exit status 1
May 22 17:21:46 dom3-gw postfix/master[36876]: warning: /usr/local/libexec/postfix/virtual: bad command startup -- throttling
он сразу понимает что нет транспорта совсем

тоесть вот так у меня не работает
# transport_maps = ...
virtual_mailbox_domains = dom3.domain.ru
virtual_mailbox_maps = ldap:/usr/local/etc/postfix/ldap_dom3.corp.local.cf
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf

убрал virtual_transport
изменил transport_maps на ldap c result_format = smtp:[%s] с поиском IP ексченжа
#transport_maps = hash:/usr/local/etc/postfix/transport
transport_maps = ldap:/usr/local/etc/postfix/ldap_transport_map.cf
почта пошла в этот ящик с кастом атрибутом

в ящик без атрибута почта не пошла
May 22 19:05:32 dom3-gw postfix/virtual[37605]: fatal: bad string length 0 < 1: virtual_mailbox_base =
May 22 19:05:33 dom3-gw postfix/master[37594]: warning: process /usr/local/libexec/postfix/virtual pid 37605 exit status 1
May 22 19:05:33 dom3-gw postfix/master[37594]: warning: /usr/local/libexec/postfix/virtual: bad command startup -- throttling


подскажите что я упускаю
посмотрел примеры, либо обе строки transport_maps и virtual_transport либо одна transport_maps

сейчас попробую настроить с relay демоном но боюсь, что transport_maps вылезит все равно, он какой-то дефолтовый тут

postfix postfix-3.5.1_1

root@dom3-gw:/usr/local/etc/postfix # postconf -n
command_directory = /usr/local/sbin
compatibility_level = 2
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = /usr/local/share/doc/postfix
inet_interfaces = all
inet_protocols = ipv4
local_recipient_maps =
mail_owner = postfix
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
message_size_limit = 41943040
meta_directory = /usr/local/libexec/postfix
milter_default_action = accept
milter_protocol = 2
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = dom3.domain.ru
myhostname = mail1.dom3.domain.ru
mynetworks = 127.0.0.0/8, 172.16.32.12/32
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/local/bin/newaliases
non_smtpd_milters = inet:localhost:12301
proxy_interfaces =
queue_directory = /var/spool/postfix
readme_directory = /usr/local/share/doc/postfix
relay_domains = $mydestination
relayhost =
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
shlib_directory = /usr/local/lib/postfix
smtpd_client_restrictions = permit_mynetworks, check_client_access hash:/usr/local/etc/postfix/sender_access, reject_unauth_pipelining, reject_unknown_client_hostname, reject_rbl_client bl.spamcop.net, reject_rbl_client sbl.spamhaus.org, reject_rbl_client zen.spamhaus.org, reject_rbl_client aspews.ext.sorbs.net, check_reverse_client_hostname_access pcre:/usr/local/etc/postfix/reverse_hostname_access.pcre
smtpd_discard_ehlo_keywords = silent-discard, dsn
smtpd_etrn_restrictions = permit_mynetworks, reject
smtpd_helo_restrictions = permit_mynetworks, check_helo_access hash:/usr/local/etc/postfix/sender_access, reject_invalid_helo_hostname, reject_unknown_helo_hostname, reject_non_fqdn_helo_hostname
smtpd_milters = inet:localhost:12301
smtpd_recipient_restrictions = check_recipient_access hash:/usr/local/etc/postfix/recipient_access, permit_mynetworks, reject_unauth_destination check_policy_service inet:127.0.0.1:10023
smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/usr/local/etc/postfix/sender_access, reject_non_fqdn_sender, reject_unverified_sender, reject_unknown_sender_domain
soft_bounce = no
unknown_local_recipient_reject_code = 550
virtual_mailbox_domains = dom3.domain.ru
virtual_mailbox_maps = ldap:/usr/local/etc/postfix/ldap_dom3.corp.local.cf
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf
root@dom3-gw:/usr/local/etc/postfix #


root@dom3-gw:/usr/local/etc/postfix # postconf | grep transport
address_verify_default_transport = $default_transport
address_verify_local_transport = $local_transport
address_verify_relay_transport = $relay_transport
address_verify_sender_dependent_default_transport_maps = $sender_dependent_default_transport_maps
address_verify_transport_maps = $transport_maps
address_verify_virtual_transport = $virtual_transport
best_mx_transport =
default_transport = smtp
default_transport_rate_delay = 0s
defer_transports =
empty_address_default_transport_maps_lookup_key = <>
error_transport_rate_delay = $default_transport_rate_delay
fallback_transport =
fallback_transport_maps =
lmtp_transport_rate_delay = $default_transport_rate_delay
local_transport = local:$myhostname
local_transport_rate_delay = $default_transport_rate_delay
mailbox_transport =
mailbox_transport_maps =
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps $smtpd_client_restrictions $smtpd_helo_restrictions $smtpd_sender_restrictions $smtpd_relay_restrictions $smtpd_recipient_restrictions $address_verify_sender_dependent_default_transport_maps $address_verify_sender_dependent_relayhost_maps $address_verify_transport_maps $fallback_transport_maps $lmtp_discard_lhlo_keyword_address_maps $lmtp_pix_workaround_maps $lmtp_sasl_password_maps $lmtp_tls_policy_maps $mailbox_command_maps $mailbox_transport_maps $postscreen_discard_ehlo_keyword_address_maps $rbl_reply_maps $sender_dependent_default_transport_maps $sender_dependent_relayhost_maps $smtp_discard_ehlo_keyword_address_maps $smtp_pix_workaround_maps $smtp_sasl_password_maps $smtp_tls_policy_maps $smtpd_discard_ehlo_keyword_address_maps $smtpd_milter_maps $virtual_gid_maps $virtual_uid_maps
relay_transport = relay
relay_transport_rate_delay = $default_transport_rate_delay
retry_transport_rate_delay = $default_transport_rate_delay
sender_dependent_default_transport_maps =
smtp_transport_rate_delay = $default_transport_rate_delay
transport_maps =
transport_retry_time = 60s
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf
virtual_transport_rate_delay = $default_transport_rate_delay
root@dom3-gw:/usr/local/etc/postfix #


root@dom3-gw:/usr/local/etc/postfix # postconf | grep virtual
address_verify_virtual_transport = $virtual_transport
propagate_unmatched_extensions = canonical, virtual
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps $smtpd_client_restrictions $smtpd_helo_restrictions $smtpd_sender_restrictions $smtpd_relay_restrictions $smtpd_recipient_restrictions $address_verify_sender_dependent_default_transport_maps $address_verify_sender_dependent_relayhost_maps $address_verify_transport_maps $fallback_transport_maps $lmtp_discard_lhlo_keyword_address_maps $lmtp_pix_workaround_maps $lmtp_sasl_password_maps $lmtp_tls_policy_maps $mailbox_command_maps $mailbox_transport_maps $postscreen_discard_ehlo_keyword_address_maps $rbl_reply_maps $sender_dependent_default_transport_maps $sender_dependent_relayhost_maps $smtp_discard_ehlo_keyword_address_maps $smtp_pix_workaround_maps $smtp_sasl_password_maps $smtp_tls_policy_maps $smtpd_discard_ehlo_keyword_address_maps $smtpd_milter_maps $virtual_gid_maps $virtual_uid_maps
unknown_virtual_alias_reject_code = 550
unknown_virtual_mailbox_reject_code = 550
virtual_alias_address_length_limit = 1000
virtual_alias_domains = $virtual_alias_maps
virtual_alias_expansion_limit = 1000
virtual_alias_maps = $virtual_maps
virtual_alias_recursion_limit = 1000
virtual_delivery_slot_cost = $default_delivery_slot_cost
virtual_delivery_slot_discount = $default_delivery_slot_discount
virtual_delivery_slot_loan = $default_delivery_slot_loan
virtual_delivery_status_filter = $default_delivery_status_filter
virtual_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
virtual_destination_concurrency_limit = $default_destination_concurrency_limit
virtual_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
virtual_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
virtual_destination_rate_delay = $default_destination_rate_delay
virtual_destination_recipient_limit = $default_destination_recipient_limit
virtual_extra_recipient_limit = $default_extra_recipient_limit
virtual_gid_maps =
virtual_initial_destination_concurrency = $initial_destination_concurrency
virtual_mailbox_base =
virtual_mailbox_domains = dom3.domain.ru
virtual_mailbox_limit = 51200000
virtual_mailbox_lock = fcntl, dotlock
virtual_mailbox_maps = ldap:/usr/local/etc/postfix/ldap_dom3.corp.local.cf
virtual_minimum_delivery_slots = $default_minimum_delivery_slots
virtual_minimum_uid = 100
virtual_recipient_limit = $default_recipient_limit
virtual_recipient_refill_delay = $default_recipient_refill_delay
virtual_recipient_refill_limit = $default_recipient_refill_limit
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf
virtual_transport_rate_delay = $default_transport_rate_delay
virtual_uid_maps =
root@dom3-gw:/usr/local/etc/postfix #


root@dom3-gw:/usr/local/etc/postfix # postconf | grep domain
append_dot_mydomain = ${{$compatibility_level} < {1} ? {yes} : {no}}
default_rbl_reply = $rbl_code Service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason}
fast_flush_domains = $relay_domains
maps_rbl_domains =
masquerade_domains =
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = dom3.domain.ru
myorigin = $mydomain
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
relay_domains = $mydestination
relay_domains_reject_code = 554
remote_header_rewrite_domain =
resolve_null_domain = no
resolve_numeric_domain = no
smtpd_sasl_local_domain =
smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/usr/local/etc/postfix/sender_access, reject_non_fqdn_sender, reject_unverified_sender, reject_unknown_sender_domain
strict_mime_encoding_domain = no
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = dom3.domain.ru
root@dom3-gw:/usr/local/etc/postfix #


root@dom3-gw:/usr/local/etc/postfix # postconf | grep relay
address_verify_relay_transport = $relay_transport
address_verify_relayhost = $relayhost
address_verify_sender_dependent_relayhost_maps = $sender_dependent_relayhost_maps
empty_address_relayhost_maps_lookup_key = <>
fast_flush_domains = $relay_domains
lmtp_fallback_relay =
luser_relay =
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
relay_clientcerts =
relay_delivery_slot_cost = $default_delivery_slot_cost
relay_delivery_slot_discount = $default_delivery_slot_discount
relay_delivery_slot_loan = $default_delivery_slot_loan
relay_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
relay_destination_concurrency_limit = $default_destination_concurrency_limit
relay_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
relay_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
relay_destination_rate_delay = $default_destination_rate_delay
relay_destination_recipient_limit = $default_destination_recipient_limit
relay_domains = $mydestination
relay_domains_reject_code = 554
relay_extra_recipient_limit = $default_extra_recipient_limit
relay_initial_destination_concurrency = $initial_destination_concurrency
relay_minimum_delivery_slots = $default_minimum_delivery_slots
relay_recipient_limit = $default_recipient_limit
relay_recipient_maps =
relay_recipient_refill_delay = $default_recipient_refill_delay
relay_recipient_refill_limit = $default_recipient_refill_limit
relay_transport = relay
relay_transport_rate_delay = $default_transport_rate_delay
relayhost =
sender_dependent_relayhost_maps =
smtp_fallback_relay = $fallback_relay
smtpd_relay_restrictions = ${{$compatibility_level} < {1} ? {} : {permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination}}
unknown_relay_recipient_reject_code = 550
root@dom3-gw:/usr/local/etc/postfix #

попробовал с
relay_domains = dom3.domain.ru
relay_recipient_maps = ldap:/usr/local/etc/postfix/ldap_dom3.corp.local.cf
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf

получил
May 22 22:52:48 be3-gw postfix/relay/smtp[39138]: DE1F76556231: to=<john3@dom3.domain.ru>, relay=none, delay=0.18, delays=0.16/0.01/0.02/0, dsn=5.4.6, status=bounced (mail for dom3.domain.ru loops back to myself)


еще подумал я над вторым "сложным вариантом" с рекурсией

обьект john у которого мы ищем ящик лежит тут
CN=john,OU=Users,OU=DOM3,DC=dom3,DC=corp,DC=local
у него есть атрибут homeMTA c DN CN=Microsoft MTA,CN=DOM3-MSG-01,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=CORP,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=corp,DC=local

у CN=Microsoft MTA есть атрибут mTALocalDesig который имеет значение в чистом виде с именем сервера DOM3-MSG-01
но проблема в том что CN Microsoft MTA находится в другой ветке CN=Configuration,DC=corp,DC=local
поэтому такой запрос не сработает
server_host = ldap://172.16.32.10
search_base = DC=dom3,DC=corp,DC=local
query_filter = (proxyAddresses=smtp:%s)
result_format = smtp:[%s]
special_result_attribute = homeMTA
result_attribute = mTALocalDesig
вывод такой
root@dom3-gw:/usr/local/etc/postfix # postmap -q john3@dom3.domain.ru ldap:/usr/local/etc/postfix/ldap_transport_map.cf
postmap: warning: dict_ldap_get_values[1]: DN CN=Microsoft MTA,CN=DOM3-MSG-01,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=CORP,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=corp,DC=local not found, skipping
postmap: warning: dict_ldap_lookup: Had some trouble with entries returned by search: No such object
root@dom3-gw:/usr/local/etc/postfix #

делаю так
server_host = ldap://172.16.32.10
search_base = DC=corp,DC=local
query_filter = (proxyAddresses=smtp:%s)
result_format = smtp:[%s]
special_result_attribute = homeMTA
result_attribute = mTALocalDesig
вывод такой
root@dom3-gw:/usr/local/etc/postfix # postmap -q john3@dom3.domain.ru ldap:/usr/local/etc/postfix/ldap_transport_map.cf
postmap: warning: dict_ldap_lookup: Search error 10: Referral
postmap: fatal: table ldap:/usr/local/etc/postfix/ldap_transport_map.cf: query error: No error: 0
root@dom3-gw:/usr/local/etc/postfix #

обращаюсь к центральному серверу с глобальным каталогом
server_host = ldap://172.16.10.10
search_base = DC=corp,DC=local
query_filter = (proxyAddresses=smtp:%s)
result_format = smtp:[%s]
special_result_attribute = homeMTA
result_attribute = mTALocalDesig
вывод пустой
root@dom3-gw:/usr/local/etc/postfix # postmap -q john3@dom3.domain.ru ldap:/usr/local/etc/postfix/ldap_transport_map.cf
root@dom3-gw:/usr/local/etc/postfix #

где я ошибся?
84
Общий раздел / Re: Postfix + ldap
« Последний ответ от egor 20 Май 2020, 02:54:38 »
и еще возник вопрос, достаточным будет вывод из ldap для транспорта
smtp:[172.16.32.12]
по идее нужно так
familia-io@dom3.domain.ru    smtp:[172.16.32.12]

Привильно так:
smtp:[172.16.32.12]
Это можно проверить с помощью статической карты, в которой у вас прописан конкретный адрес:
postmap -q familia-io@dom3.domain.ru hash:/usr/local/etc/postfix/transport
попробовал и так и с email,  сменил транспорт на центральный сервер, получается без дефолтного почта просто не идет а с ним она идет куда там прописано., без участия ldap запроса

выключаю virtual_transport
он становится virtual_transport = virtual
почта идет,
точно пользуется transport_maps

Предлагаю не метаться, а добиться, чтобы у вас заработала транспортная LDAP-карта. Отключите transport_maps, а в настройках демона virtual оставьте так:
# transport_maps = ...

...

virtual_mailbox_domains = dom3.domain.ru
virtual_mailbox_maps = ldap:/usr/local/etc/postfix/ldap_dom3.corp.local.cf
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf

Почта должна ходить только для тех пользователей, у которых прописан атрибут для транспортной LDAP-карты, для остальных -- нет. После того, как вы этого добьётесь, добавьте дефолтную статическую транспортную карту, чтобы почта ходила для всех остльных пользователей:
virtual_transport = ldap:/usr/local/etc/postfix/transport/ldap_transport_map.cf, hash:/usr/local/etc/postfix/transport
85
Общий раздел / Re: Postfix + ldap
« Последний ответ от JohnRD 20 Май 2020, 02:04:25 »
в карте
domain = dom3.domain.ru
убрал почта идет

в конфиге
virtual_mailbox_domains = dom3.domain.ru
выключаю virtual_mailbox_domains
он становится virtual_mailbox_domains = $virtual_mailbox_maps
почта не идет

и в карте и в конфиге одно значение dom3.domain.ru

и еще возник вопрос, достаточным будет вывод из ldap для транспорта
smtp:[172.16.32.12]
по идее нужно так
familia-io@dom3.domain.ru    smtp:[172.16.32.12]

попробовал и так и с email,  сменил транспорт на центральный сервер, получается без дефолтного почта просто не идет а с ним она идет куда там прописано., без участия ldap запроса

выключаю virtual_transport
он становится virtual_transport = virtual
почта идет,
точно пользуется transport_maps


86
Общий раздел / Re: Postfix + ldap
« Последний ответ от egor 19 Май 2020, 23:49:36 »
Попробую ответить на Ваши вопросы.

Про последовательность обработки virtual_mailbox_maps и virtual_transport. Трудно сказать, это нужно хорошо знать внутреннюю кухню Postfix, подозреваю, что сначала обрабатывается virtual_mailbox_maps, а потом virtual_transport. В принципе, они независимы друг от друга, переживать особенно нечего. По здравому размышлению, от virtual_mailbox_maps в вашей ситуации вообще можно отказаться.

Кстати, я тут подумал на свежую голову: вы же не используете Postfix для доставки почты непосредственно в почтовые ящики, а пересылаете почту для доставки в Exchange. Поэтому вместо демона virtual (доставщика почты в виртуальные ящики), правильнее было бы настраивать демон relay с соответствующими параметрами relay_domains, relay_transport и (при необходимости) relay_recipient_maps.

Про указание двух карт в virtual_transport (через запятую). Они будут обрабатываться последовательно в порядке указания в параметре. Если первая вернёт ответ, вторая обрабатываться не будет (логическое "ИЛИ"). Вторую, дефолтную, я оставил на случай, если администратор забудет назначить в каталоге значение атрибута, который используется в транспортной LDAP-карте. Или можно назначить "нестандартную" транспортировку только тем, кому она действительно нужна, остальным получателям транспортировка будет по дефолту.

Про параметр transport_maps. В документации Postfix толком не сказано, зачем он нужен. Подозреваю, что это глобальный дефолт для выбора транспорта, если определиться с транспортировкой из других карт (local_transport, virtual_transport, relay_transport) не удалось. Мне кажется, в вашем случае он задействуется потому, что "нестандартный" домен получателя не перечислен в параметре virtual_mailbox_domains, поэтому демон virtual вообще не задействуется для обработки письма и Postfix использует глобальные настройки транспортировки из transport_maps. Если привести в порядок virtual_mailbox_domains, то от transport_maps можно будет отказаться.

Кстати, если вы указываете в настройках LDAP-карты параметр domain, то в нём список доменов тоже должен быть исчерпывающим, иначе могут возникнуть непредвиденные трудности с доставкой. Или вообще откажитесь от использования этого параметра.

Про фильтр в параметре query_filter транспортной LDAP-карты. Я же просто показал вам пример, настраивайте, как считаете правильным для вашей ситуации.
87
Общий раздел / Re: Postfix + ldap
« Последний ответ от JohnRD 19 Май 2020, 19:58:31 »
Егор спасибо
у ексченжа есть свободные 15 кастом атрибутов в которые можно писать что хочешь, вписал IP

server_host =
        172.16.32.10,
        172.16.32.11
server_port = 3268
timeout = 60
search_base = DC=dom3,DC=corp,DC=local
query_filter = (&(proxyAddresses=smtp:%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(objectClass=user))
result_format = smtp:[%s]
domain = dom3.domain.ru
result_attribute = extensionAttribute1
scope = sub
bind_dn = CN=postfix,OU=Service_Accounts,OU=DOM3,DC=dom3,DC=corp,DC=local
bind_pw = Passw0rd
version = 3
Получил вывод как у вас
root@dom3-gw:/usr/local/etc/postfix # postmap -q john3@dom3.domain.ru ldap:./test.cf
smtp:[172.16.32.12]

но есть вопросы
получается это будет проверять наличие юзера в лдап
virtual_mailbox_maps = ldap:/usr/local/etc/postfix/ldap_corp.local.cf

и это
virtual_transport = ldap:/usr/local/etc/postfix/transport/ldap_transport_map.cf

какова последовательность обработки кто первый virtual_mailbox_maps или virtual_transport

может у virtual_mailbox_maps запрос оставить полный с проверкой на класс обьекта и исключать выключенные.
query_filter = (&(proxyAddresses=smtp:%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(objectClass=user)(objectClass=group)))

а у virtual_transport поменьше
query_filter = proxyAddresses=smtp:%s

и еще
какая цель у транспорта по дефолту, hash:/usr/local/etc/postfix/transport
что там написать? и куда направить? в каком случае он может понадобиться?


попробовал изменить транспорт на ldap
почта идет, далее попробовал на другой адрес у которого нет кастом атрибута, все равно идет, обнаружил следующее
у меня в main.cf   2 параметра транспорта

transport_maps = hash:/usr/local/etc/postfix/transport
и
#virtual_transport = hash:/usr/local/etc/postfix/transport
virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf

выключил первый
#transport_maps = hash:/usr/local/etc/postfix/transport
в логах
relay=none, delay=0.16, delays=0.16/0/0/0, dsn=4.3.0, status=deferred (mail transport unavailable

вернул второй
virtual_transport = hash:/usr/local/etc/postfix/transport
#virtual_transport = ldap:/usr/local/etc/postfix/ldap_transport_map.cf

relay=none, delay=0.27, delays=0.26/0/0/0.01, dsn=4.3.0, status=deferred (mail transport unavailable)

в обоих стаивить ldap ? или как отказаться от
#transport_maps = hash:/usr/local/etc/postfix/transport
88

LDAP-каталог разворачивают из-за простоты его использования, а не чтобы усложнить себе жизнь. Поэтому предлагаю вам сразу взяться за изучение основ, а эксперименты проводить на флагманском OpenLDAP-бэкенде slapd-mdb.
Любопытно. А выглядело всё так хорошо. Жаль потраченного времени, но поделать нечего.

Чисто из любопытства:  где вы взяли настройки для database sql в slapd.conf? Где взяли структуру таблиц для БД?

Хорошо погуглил: https://gist.github.com/mahirrudin/9b7754e54f1e8e532049484864beba42 (инструкция не полная, нужны правила pparmor или отключение apparmor)
А маппинг запросов пишет сам бекенд при запуске демона. Внёс их в конфиг чтоб убрать варнинги.
89
Здравствуйте! Сразу скажу, что я настоятельно не рекомендую даже браться за slapd-sql, особенно новичкам. Причины следующие:
- это экспериментальный бэкенд, активная поддержка которого завершилась в версии OpenLDAP 2.1 (то есть больше 15 лет назад);
- изначально это была довольно неуклюжая попытка впихнуть NoSQL-данные в реляционную структуру, причём довольно костыльными методами;
- без знания концепции представления информации в каталоге (если вы новичок), вы просто запутаетесь в каше из данных, потому что там действительно каша (даже и не для новичков);
- более-менее приличные попытки описать свои эксперименты с этим бэкендом датируются 2004-2005 годами, то есть желавшие поэкспериментировать, скорее всего, давно отошли от дел и помогать не станут;
- наконец, лично я не хочу даже вникать в настройки и запуск slapd-sql, поскольку практической пользы от него никакой, а в качестве "чистого эксперимента" это рискует поглотить очень много времени, которого итак ни на что не хватает. А больше вам на этом форуме вряд ли кто-то поможет.

LDAP-каталог разворачивают из-за простоты его использования, а не чтобы усложнить себе жизнь. Поэтому предлагаю вам сразу взяться за изучение основ, а эксперименты проводить на флагманском OpenLDAP-бэкенде slapd-mdb.

Чисто из любопытства:  где вы взяли настройки для database sql в slapd.conf? Где взяли структуру таблиц для БД?

Егор
90
Добрый день.
Поднимаю LDAP первый раз. ОС ubuntu 16.04. Мякотка в том, что это мой первый раз и сразу для продакшена в крупной компании.
Прошёл по шагам руководство убунты.
Затем мне показалось, что от ряда проблем меня избавит хранение дерева в mysql. Репликация, отказоустойчивость, резервное копирование могут быть реализованы привычными инструментами.
Поднял slapd заново с бекендом в виде mysql. С вашего позволения сразу покажу конфиг:

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema

pidfile   /var/run/slapd/slapd.pid
argsfile  /var/run/slapd/slapd.args

moduleload back_sql
database  sql
suffix    "dc=example,dc=com"
rootdn    "cn=admin,dc=example,dc=com"
rootpw    ROOTPW

dbname ldap
dbuser ldap
dbhost 127.0.0.1
dbname ldap
dbpasswd EethooK6loogieph
has_ldapinfo_dn_ru no
subtree_cond "ldap_entries.dn LIKE CONCAT('%',?)"

children_cond "ldap_entries.dn LIKE CONCAT('%,',?)"
dn_match_cond "ldap_entries.dn=?"
oc_query "SELECT id,name,keytbl,keycol,create_proc,delete_proc,expect_return FROM ldap_oc_mappings"
at_query "SELECT name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return,sel_expr_u FROM ldap_attr_mappings WHERE oc_map_id=?"
insentry_stmt "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)"
delentry_stmt "DELETE FROM ldap_entries WHERE id=?"
renentry_stmt "UPDATE ldap_entries SET dn=?,parent=?,keyval=? WHERE id=?"
delobjclasses_stmt "DELETE FROM ldap_entry_objclasses WHERE entry_id=?"
concat_pattern "CONCAT(?,?);"

Смущает цитата из документации: "Основное назначение данного механизма манипуляции данными slapd(8)- ПРЕДСТАВИТЬ информацию, хранящуюся в некоторой реляционной СУБД, в виде поддерева LDAP без какого-либо дополнительного программирования (не будем рассматривать в качестве программирования инструкции SQL и (возможно) хранимые процедуры)."

Верно ли я вообще понимаю, что могу понять LDAP с хранилищем в mysql и пользоваться им "как обычно"?

Дело в том, что пример с ldapadd из вышеупомянутого руководства завершается с ошибкой:

dn: ou=People,dc=example,dc=com
ou: People

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=miners,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: sudo
gidNumber: 5000

dn: uid=test,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: test
sn: Test
givenName: Test
cn: Test Test
displayName: Test Test
uidNumber: 10000
gidNumber: 5000
userPassword: 123qwe
gecos: Test Test
loginShell: /bin/bash
homeDirectory: /home/test
~# ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif
Enter LDAP Password:
adding new entry "ou=People,dc=example,dc=com"
ldap_add: Server is unwilling to perform (53)
additional info: operation not permitted within namingContext

5ec3a143 slap_listener_activate(8):
5ec3a143 >>> slap_listener(ldap:///)
5ec3a143 connection_get(11)
5ec3a143 connection_get(11): got connid=1002
5ec3a143 connection_read(11): checking for input on id=1002
ber_get_next
ber_get_next: tag 0x30 len 50 contents:
5ec3a143 op tag 0x60, time 1589879107
ber_get_next
5ec3a143 conn=1002 op=0 do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
5ec3a143 >>> dnPrettyNormal: <cn=admin,dc=example,dc=com>
=> ldap_bv2dn(cn=admin,dc=example,dc=com,0)
<= ldap_bv2dn(cn=admin,dc=example,dc=com)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=admin,dc=example,dc=com)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=admin,dc=example,dc=com)=0
5ec3a143 <<< dnPrettyNormal: <cn=admin,dc=example,dc=com>, <cn=admin,dc=example,dc=com>
5ec3a143 do_bind: version=3 dn="cn=admin,dc=example,dc=com" method=128
5ec3a143 ==>backsql_bind()
5ec3a143 conn=1002 op=0: rootdn="cn=admin,dc=example,dc=com" bind succeeded
5ec3a143 <==backsql_bind(0)
5ec3a143 do_bind: v3 bind: "cn=admin,dc=example,dc=com" to "cn=admin,dc=example,dc=com"
5ec3a143 send_ldap_result: conn=1002 op=0 p=3
5ec3a143 send_ldap_result: err=0 matched="" text=""
5ec3a143 send_ldap_response: msgid=1 tag=97 err=0
ber_flush2: 14 bytes to sd 11
5ec3a143 connection_get(11)
5ec3a143 connection_get(11): got connid=1002
5ec3a143 connection_read(11): checking for input on id=1002
ber_get_next
ber_get_next: tag 0x30 len 89 contents:
5ec3a143 op tag 0x68, time 1589879107
ber_get_next
5ec3a143 conn=1002 op=1 do_add
ber_scanf fmt ({m) ber:
5ec3a143 conn=1002 op=1 do_add: dn (ou=People,dc=example,dc=com)
ber_scanf fmt ({m{W}}) ber:
ber_scanf fmt ({m{W}}) ber:
ber_scanf fmt (}) ber:
5ec3a143 >>> dnPrettyNormal: <ou=People,dc=example,dc=com>
=> ldap_bv2dn(ou=People,dc=example,dc=com,0)
<= ldap_bv2dn(ou=People,dc=example,dc=com)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=People,dc=example,dc=com)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(ou=people,dc=example,dc=com)=0
5ec3a143 <<< dnPrettyNormal: <ou=People,dc=example,dc=com>, <ou=people,dc=example,dc=com>
5ec3a143 ==>backsql_add("ou=People,dc=example,dc=com")
5ec3a143 oc_check_required entry (ou=People,dc=example,dc=com), objectClass "organizationalUnit"
5ec3a143 oc_check_allowed type "objectClass"
5ec3a143 oc_check_allowed type "ou"
5ec3a143 oc_check_allowed type "structuralObjectClass"
5ec3a143    backsql_add("ou=People,dc=example,dc=com"): cannot map structuralObjectClass "organizationalUnit" -- aborting
5ec3a143 send_ldap_result: conn=1002 op=1 p=3
5ec3a143 send_ldap_result: err=53 matched="" text="operation not permitted within namingContext"
5ec3a143 send_ldap_response: msgid=2 tag=105 err=53
ber_flush2: 58 bytes to sd 11
5ec3a143 <==backsql_add("ou=People,dc=example,dc=com"): 53 "operation not permitted within namingContext"
5ec3a143 connection_get(11)
5ec3a143 connection_get(11): got connid=1002
5ec3a143 connection_read(11): checking for input on id=1002
ber_get_next
ber_get_next: tag 0x30 len 5 contents:
5ec3a143 op tag 0x42, time 1589879107
ber_get_next
5ec3a143 conn=1002 op=2 do_unbind
5ec3a143 connection_close: conn=1002 sd=11

Ну а phpldapadmin говорит: "This base cannot be created with PLA."
Страницы: 1 ... 7 8 [9] 10
Эта страница

Содержание

Новости:
Форум проекта Pro-LDAP.ru
OpenLDAP 2.4 Руководство

Содержание

Введение в службы каталогов OpenLDAPБыстрое развёртывание и начало работыОбщая картина - варианты конфигурацииСборка и установка OpenLDAPНастройка slapd

 

Конфигурационный файл slapdЗапуск slapdКонтроль доступаОграниченияИнструментыМеханизмы манипуляции даннымиНаложенияСпецификация схемы

 

БезопасностьSASLTLSРаспределённая служба каталоговРепликацияОбслуживаниеМониторингПроизводительностьУстранение неполадок
Перевод официального руководства OpenLDAP 2.4 Admin Guide
Полное содержание здесь
LDAP для учёных-ракетчиков

Содержание

О книгеКонцепции LDAPОбъекты LDAPУстановка LDAPПримерыНастройкаРепликация и отсылкиLDIF и DSMLПротоколLDAP API

 

HOWTOНеполадкиПроизводительностьИнструменты LDAPБезопасностьЗаметкиРесурсы LDAPRFC и X.500ГлоссарийОбъекты
Перевод "LDAP for Rocket Scientists"
Полное содержание здесь
Ресурсы

Книги

Руководство OpenLDAP 2.4LDAP для учёных-ракетчиков

Другие

СтатьиТермины LDAPman-страницы OpenLDAP 2.4Список RFCКлиенты LDAPФайлы наборов схемы
Полезные ресурсы
Форум

 

Разделы форумаНепрочитанные сообщенияПоследние сообщения
Форум проекта
Главная

Pro-LDAP.ru

О проектеНовости проектаУчастникиСтаньте участником!Сообщите об ошибке!Об авторских правахСоглашения проекта
Присоединяйсь!