The HTTP lookup table model for Postfix Code
Brought to you by:
jiaxiaohua
File | Date | Author | Commit |
---|---|---|---|
conf | 2010-07-09 | jiaxiaohua | [r6] attempts remedy host |
patch | 2009-12-19 | jiaxiaohua | [r3] add conf parameter: http_timeout retry_connect_... |
src | 2010-07-09 | jiaxiaohua | [r6] attempts remedy host |
CHANGES | 2010-07-09 | jiaxiaohua | [r6] attempts remedy host |
Makefile | 2010-07-09 | jiaxiaohua | [r6] attempts remedy host |
README | 2009-12-19 | jiaxiaohua | [r3] add conf parameter: http_timeout retry_connect_... |
Postfix DICT HTTP Howto ------------------------------------------------------------------------------- Introduction The Postfix http map type allows you to hook up Postfix to a http server with HTTP protocol, such as apache lighttpd nginx, etc. You need to write a CGI/FastCGI with C CPP Perl PHP etc, to complete the query from your proprietary database. You can specify multiple servers for the same http map, so that Postfix can switch to a good http server if one goes bad. Building Postfix with Http support Get postfix source code from: http://www.postfix.org/download.html tar xfz postfix-2.x.x.tar.gz cd postfix-2.x.x patch -p1 -d ./ < ../postfix-2.x.x_with_dict_http.patch Then you can build Postfix from source code as described in the INSTALL document. Using HTTP map Once Postfix is built with http support, you can specify a map type in main.cf like this: alias_maps = http:/etc/postfix/http-aliases.cf The file /etc/postfix/http-aliases.cf specifies lots of information telling Postfix how to reference the http server. For a complete description, see the http_table_sample.cf document. PROTOCOL DESCRIPTION The HTTP map class implements a very simple HTTP protocol: the client sends a request, and the server sends one reply. Requests and replies are sent as http header text, terminated by the double newline character. Request and reply parameters (see below). REQUEST FORMAT Each request is http header. The lookup key is the value of key "POSTFIX-DICT-EMAIL" like this: GET /url_can_be_configured_by/http_table_sample.cf HTTP/1.1 POSTFIX-DICT-EMAIL: username@domain.com Keep-Alive: 300 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache REPLY FORMAT Each reply specifies a status code, error message and results data. Replies must be no longer than 4096 characters including the newline terminator. like this: HTTP/1.1 200 OK Server: xxxxxxxxxxxxxxx Date: Fri, 10 Dec 2000 00:00:00 GMT Connection: keep-alive Content-Length: 0 POSTFIX-DICT-RETCODE: 200 POSTFIX-DICT-RETMSG: POSTFIX-DICT-RESULTS: separated by a space if multi-results POSTFIX_DICT_RETCODE: 2XX: The request was successful. The value of key "POSTFIX_DICT_RESULTS" is results. If the requested data does not exist, please let the result is empty. Other: This indicates an error condition. The value of key "POSTFIX_DICT_RETMSG" describes the nature of the problem. The client should retry the request later. POSTFIX_DICT_RETMSG: As described the nature of the problem. POSTFIX_DICT_RESULTS: The results of the query request data. If multiple results let results separated by a space. If the requested data does not exist, please let the result is empty. SECURITY Do not use HTTP lookup tables for security critical pur- poses. The client-server connection is not protected and the server is not authenticated. Additional notes The Http configuration interface setup allows for multiple http servers: you can use one for a virtual table, one for an access table, and one for an aliases table if you want. Since sites that have a need for multiple mail exchangers may enjoy the convenience of using a networked mailer database, but do not want to introduce a single point of failure to their system, we've included the ability to have Postfix reference multiple hosts for access to a single http map. This will work if sites set up mirrored back-end databases on two or more http server hosts. Whenever queries fail with an error at one host, the rest of the hosts will be tried in random order. If no http server hosts are reachable, then mail will be deferred until at least one of those hosts is reachable. Credits Xiaohua Jia xhjz@hotmail.com Beijing, PRC 100013 This project: https://sourceforge.net/projects/postlookup-http/