On Tue, Jan 19, 2010 at 09:56:46AM +0700, Tr???n Tr???ng T???n wrote: > Do you have any way to check domain of email and IP of sending host before > relay it? I'm trying to setup a gateway which accept relay for some IP > address, and make sure this IP can only send email from domain(s) it owned.
You want to restrict a set of client systems to a given set of sender domains, when the client wants to relay to a remote destination. Postfix can do this directly, when the number of distinct sets of sender domains is not too large: http://www.postfix.org/RESTRICTION_CLASS_README.html main.cf: cidr = cidr:${config_directory}/ indexed = ${default_database_type}:${config_directory}/ smtpd_restriction_classes = restrict_to_sender_domain_set_A, restrict_to_sender_domain_set_B, restrict_to_sender_domain_set_C, restrict_to_sender_domain_set_D restrict_to_sender_domain_set_A = check_sender_access ${indexed}domain-acl-A, reject restrict_to_sender_domain_set_B = check_sender_access ${indexed}domain-acl-B, reject restrict_to_sender_domain_set_C = check_sender_access ${indexed}domain-acl-C, reject restrict_to_sender_domain_set_D = check_sender_access ${indexed}domain-acl-D, reject smtpd_client_restrictions = # # If client sending mail to remote destination, # don't enforce sender domain restrictions. # Comment out if want to restrict regardless... # permit_auth_destination, # # Otherwise restrict sender domain for selected clients # check_client_access ${cidr}client-domain-acl.cidr client-domain-acl.cidr: # .1, .2 and .3 can relay with domains A, B and C respectively # 192.0.2.1/32 restrict_to_sender_domain_set_A 192.0.2.2/32 restrict_to_sender_domain_set_B 192.0.2.3/32 restrict_to_sender_domain_set_C # .5/32 can relay with any sender domain # 192.0.2.5/32 permit # The /24 restricted to sender domains D # 192.0.2.0/24 restrict_to_sender_domain_set_D domain-acl-A: example.com permit example.org permit domain-acl-B: example.net permit domain-acl-C: example.edu permit domain-acl-D: com.example permit net.example permit org.example permit If the set of domains can grow large, you need a policy service instead, that consults a suitable database with a query that specifies the client ip and the sender domain, and returns a suitable verdict. -- Viktor. Disclaimer: off-list followups get on-list replies or get ignored. Please do not ignore the "Reply-To" header. To unsubscribe from the postfix-users list, visit http://www.postfix.org/lists.html or click the link below: <mailto:majord...@postfix.org?body=unsubscribe%20postfix-users> If my response solves your problem, the best way to thank me is to not send an "it worked, thanks" follow-up. If you must respond, please put "It worked, thanks" in the "Subject" so I can delete these quickly.