Postfix中继ldap查找和传输

我试图实现postfix + policyd / amavis + dspam。 问题是我需要做ldap查找以获得下一跳。 但是同时我需要将一些“电子邮件地址”redirect到“dspam-retrain”。 我不知道该怎么做,我的意思是,我的configuration如下:

main.cf

queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix mydomain = ddol-test.com myorigin = $myhostname inet_interfaces = localhost, 192.168.66.98 inet_protocols = all mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 mynetworks = 192.168.66.0/24, 127.0.0.0/8 relay_domains = $mydestination alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases #transport_maps = ldap:/etc/postfix/perditionMailhost_ldap transport_maps = hash:/etc/postfix/transport content_filter = amavisd-new:[127.0.0.1]:10024 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 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.6.6/samples readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES local_recipient_maps = 

master.cf

 smtp inet n - n - 200 smtpd -v pickup fifo n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr fifo n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp -o smtp_fallback_relay= -o disable_dns_lookups=yes showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - nn - - local virtual unix - nn - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache amavisd-new unix - - n - 2 smtp -o smtp_data_done_timeout=1200s -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter=lmtp:unix:/tmp/dspam.sock -o dspam_destination_recipient_limit=1 localhost:10026 inet n - n - - smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o smtpd_authorized_xforward_hosts=127.0.0.0/8 dspam-retrain unix - nn - 10 pipe flags=Ru user=dspam argv=/usr/bin/dspam --user [email protected] --class=$nexthop --source=error 

cat / etc / postfix / transport

 [email protected] dspam-retrain:spam [email protected] dspam-retrain:innocent [email protected] dspam-retrain:innocent 

cat / etc / postfix / perditionMailhost_ldap

 server_host = ldap1-1.ddol-test.com:1389 version = 3 search_base = ou=mymensajes,ou=pre_ddolcontext,dc=org scope = sub query_filter = mail=%s result_attribute = perditionMailhost ldap_bind = no result_filter = relay:[%s] 

所以,我需要:

如果邮件是[email protected]到dspam-retrain:spam否则使用ldap表获取下一步。

但是我不知道应该使用哪个额外的选项,因为我不能使用两个transport_maps定义。

我不知道如果我正确地解释我的自我,我希望如此:)

谢谢!

您不能使用多个transport_maps定义,但只要您愿意,您可以将多个数据源列入一个transport_maps 。 所以,

 transport_maps = hash:/etc/postfix/transport ldap:perdition 

应该pipe用。 只要在你的/etc/postfix/perditionMailhost_ldap定义中加上“ perdition这个词就可以了

 perdition_server_host = ldap1-1.ddol-test.com:1389 perdition_version = 3 perdition_search_base = ou=mymensajes,ou=pre_ddolcontext,dc=org (and so on) 

另外你的query_filter很可能是perdition_query_filter = (mail=%s) ,LDAP对括号是挑剔的。