Re: Routing solution on mail servers with all domain pointing at the same externel IP
Jimmy Brake <[email protected]>
| Newsgroups | gmane.mail.perdition.user |
|---|---|
| Message-ID | <[email protected]> |
Hi, Wow kind of a busy thread so I am not sure if I fully understand it .. however .. the setup looks similar to mine. Where I have different clients in the same or different domains that need to be routed to the proper server. I remember it was not easy to setup. M /usr/lib/libperditiondb_mysql.so.0 m someIP:3306:dbPerdition:tblPerdition:dbUser:dbPass:servername:concat(user,\'@\',domain):port server_resp_line Those are pretty much the only three lines in my config file for perdition. You could change these to suite your needs: "someIP:3306:dbPerdition:tblPerdition:dbUser:dbPass" You should probably not change these: "servername:concat(user,\'@\',domain):port" my mysql table looks like this mysql> describe perdition; +------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+-------+ | user | varchar(128) | NO | MUL | NULL | | | domain | varchar(255) | NO | MUL | NULL | | | servername | varchar(255) | NO | MUL | NULL | | | port | varchar(8) | NO | MUL | NULL | | +------------+--------------+------+-----+---------+-------+ some rows of users mysql> select * from perdition limit 0,10; +------------+----------------+------------------------+------+ | user | domain | servername | port | +------------+----------------+------------------------+------+ | donotreply | dwalliance.com | node8.youdomain.com | | | jimmy | dwalliance.com | node8.youdomain.com | | | inda | dwalliance.com | node8.youdomain.com | | | support | dwalliance.com | node8.youdomain.com | | | costarica | dwalliance.com | node8.youdomain.com | | | cathe | dwalliance.com | node7.youdomain.com | | | node7 | dwalliance.com | node7.youdomain.com | | | node6 | dwalliance.com | node6.youdomain.com | | | donnie | thebrakes.org | node8.youdomain.com | | | ken | brake.org | node8.youdomain.com | | +------------+----------------+------------------------+------+ We left the port blank .. when we had the port set to a protocol it would only allow that protocol. Leaving it blank and people can use whatever suits them best. Before any of this will work ... make sure imap / pop work on the mail hosts, make sure the mysql account works from the perdition server. Sorry I did not read through the complete thread and I hope this helps. Jimmy Stephen Liu wrote: --- Gustavo Luiz Duarte <[email protected]> wrote: Well, it worked. Now your courier imap is rejecting the user/pass you supplied. Hi Gustavo, Yes, it works. I must use the password on the user.table of MySQL maildb, NOT the password to login the mail server. xen11:~# echo "tag login [email protected] mypasswd" | nc xen11.satimis.com 143 * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information. tag OK LOGIN Ok. xen11:~# tail /var/log/mail.log Dec 3 16:27:40 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.211], command=LOGIN Dec 3 16:27:40 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.211], [email protected] Dec 3 16:27:40 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.211], password=mypasswd Dec 3 16:27:40 xen11 authdaemond: received auth request, service=imap, authtype=login Dec 3 16:27:40 xen11 authdaemond: authmysql: trying this module Dec 3 16:27:40 xen11 authdaemond: SQL query: SELECT id, "", clear, uid, gid, home, concat(home,'/',maildir), "", name, "" FROM users WHERE id = "[email protected]" AND (enabled=1) Dec 3 16:27:40 xen11 authdaemond: authmysql: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/var/spool/mail/virtual, [email protected] , fullname=Stephen, maildir=/var/spool/mail/virtual/Stephen/, quota=<null>, options=<null> Dec 3 16:27:40 xen11 authdaemond: Authenticated: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/var/spool/mail/virtual, [email protected] , fullname=Stephen, maildir=/var/spool/mail/virtual/Stephen/, quota=<null>, options=<null> Dec 3 16:27:40 xen11 imapd: LOGIN, [email protected] , ip=[::ffff:192.168.0.211], protocol=IMAP Dec 3 16:28:14 xen11 imapd: DISCONNECTED, [email protected] , ip=[::ffff:192.168.0.211], headers=0, body=0, rcvd=0, sent=18, time=34 With the same password on Evolution I can send mails but can't receive mails. IMAPrev1 Server: xen11.satimis.com username: [email protected] Error while Scanning folders in "IMAP server xen11.satimis.com". Failed sending command to IMAP server xen11.satimis.com: Interrupted system call xen11:~# tail /var/log/mail.log Dec 3 17:02:13 xen11 authdaemond: authmysql: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/var/spool/mail/virtual, [email protected] , fullname=Stephen, maildir=/var/spool/mail/virtual/Stephen/, quota=<null>, options=<null> Dec 3 17:02:13 xen11 authdaemond: Authenticated: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/var/spool/mail/virtual, [email protected] , fullname=Stephen, maildir=/var/spool/mail/virtual/Stephen/, quota=<null>, options=<null> Dec 3 17:02:13 xen11 imapd: LOGIN, [email protected] , ip=[::ffff:192.168.0.110], protocol=IMAP Dec 3 17:03:25 xen11 postfix/anvil[3590]: statistics: max connection rate 1/60s for (smtp:220.232.213.178) at Dec 3 16:57:27 Dec 3 17:03:25 xen11 postfix/anvil[3590]: statistics: max connection count 1 for (smtp:220.232.213.178) at Dec 3 16:57:27 Dec 3 17:03:25 xen11 postfix/anvil[3590]: statistics: max cache size 1 at Dec 3 16:57:27 Dec 3 17:05:44 xen11 imapd: DISCONNECTED, [email protected] , ip=[::ffff:192.168.0.110], headers=6318, body=0, rcvd=7778, sent=61498, time=211 Dec 3 17:05:52 xen11 imapd: Connection, ip=[::ffff:192.168.0.110] Dec 3 17:05:52 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.110], command=CAPABILITY Dec 3 17:06:14 xen11 imapd: Disconnected, ip=[::ffff:192.168.0.110], time=22 A further question, on remote PC how can remote mail client find the server-xen11.satimis.com? Use the external IP of the routing mail server? B.R. Stephen On Thu, Dec 4, 2008 at 01:17, Stephen Liu <[email protected]> wrote: --- Gustavo Luiz Duarte <[email protected]> wrote: I suppose IMAP4_FLAGS="-m /etc/perdition_lookup.gdbm.db --query_key '\d ' " Edit /etc/default/perdition xen11:~# cat /etc/default/perdition | grep IMAP4_FLAGS # by POP3_FLAGS, POP3S_FLAGS, IMAP4_FLAGS or IMAP4S_FLAGS IMAP4_FLAGS="-m /etc/perdition_lookup.gdbm.db --query_key '\d' " xen11:~# /etc/init.d/perdition restart Stopped /usr/sbin/perdition.pop3 (pid 3458). No /usr/sbin/perdition.pop3s found running; none killed. No /usr/sbin/perdition.imap4 found running; none killed. No /usr/sbin/perdition.imaps found running; none killed. Starting /usr/sbin/perdition.pop3... Starting /usr/sbin/perdition.pop3s... Starting /usr/sbin/perdition.imap4... Starting /usr/sbin/perdition.imaps... xen11:~# echo "tag login [email protected] mypasswd" | nc xen11.satimis.com 143 * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information. tag NO Login failed. hanging here. xen11:~# tail /var/log/mail.log Dec 3 15:58:01 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.211], [email protected] Dec 3 15:58:01 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.211], password=mypasswd Dec 3 15:58:01 xen11 authdaemond: received auth request, service=imap, authtype=login Dec 3 15:58:01 xen11 authdaemond: authmysql: trying this module Dec 3 15:58:01 xen11 authdaemond: SQL query: SELECT id, "", clear, uid, gid, home, concat(home,'/',maildir), "", name, "" FROM usersWHERE id = "[email protected]" AND (enabled=1) Dec 3 15:58:01 xen11 authdaemond: supplied password does not match clearpasswd Dec 3 15:58:01 xen11 authdaemond: authmysql: REJECT - try next module Dec 3 15:58:01 xen11 authdaemond: FAIL, all modules rejected Dec 3 15:58:01 xen11 imapd: LOGIN FAILED, [email protected] , ip=[::ffff:192.168.0.211] Dec 3 15:58:21 xen11 imapd: Disconnected, ip=[::ffff:192.168.0.211], time=20 Still fail B.R. Stephen L On Thu, Dec 4, 2008 at 00:30, Stephen Liu <[email protected]> wrote: --- Gustavo Luiz Duarte <[email protected]> wrote: You are not supplying the necessary options: -m and --query_key. You can set it by command line parameter or in /etc/perdition/perdition.conf (maybe /etc/defaults too) Hi Gustavo, Please advise how to set them on /etc/default/perdition. cat /etc/default/perdition ###################################################################### # /etc/sysconfig/perdition (RPM based systems) # /etc/default/perdition (Debian) # # Run time configuration parameters for perdition ###################################################################### # Run perdition # Set to "yes" to run perdition # Set to any other value to not run perdition RUN_PERDITION=yes # Command line parameters to pass to perdition when run in any mode. # This is in addition to any mode specific flags. # That is, it is in addtion to any command line options supplied # by POP3_FLAGS, POP3S_FLAGS, IMAP4_FLAGS or IMAP4S_FLAGS #FLAGS= # Run an instance of perdition in POP3 mode # Set to "yes" to run this instance of perdition # Set to any other valye to not run this instance of perdition POP3=yes #Command line parameters to pass to perdition when run in POP3 mode POP3_FLAGS= # Run an instance of perdition in POP3S mode # Set to "yes" to run this instance of perdition # Set to any other valye to not run this instance of perdition POP3S=yes #Command line parameters to pass to perdition when run in POP3S mode POP3S_FLAGS= # Run an instance of perdition in IMAP4 mode # Set to "yes" to run this instance of perdition # Set to any other valye to not run this instance of perdition IMAP4=yes #Command line parameters to pass to perdition when run in IMAP4 mode IMAP4_FLAGS= # Run an instance of perdition in IMAP4S mode # Set to "yes" to run this instance of perdition # Set to any other valye to not run this instance of perdition IMAP4S=yes #Command line parameters to pass to perdition when run in IMAP4S mode IMAP4S_FLAGS= * end * TIA B.R. Stephen L For some reason I was thinking about the hints I gave you and realized I made a mistake. I forgot to mention that your client needs to use the domain while authenticating. So the test would be: $ echo "tag login username@domain password" | nc perdition_host 143 Without the domain (as I had written) perdition cannot resolve which server to connect. Tried again. xen11:~# /etc/init.d/perdition restart Stopped /usr/sbin/perdition.pop3 (pid 2878). No /usr/sbin/perdition.pop3s found running; none killed. No /usr/sbin/perdition.imap4 found running; none killed. No /usr/sbin/perdition.imaps found running; none killed. /usr/sbin/perdition.pop3 already running. Starting /usr/sbin/perdition.pop3s... Starting /usr/sbin/perdition.imap4... Starting /usr/sbin/perdition.imaps... xen11:~# echo "tag login [email protected] x10satimis" | nc xen11.satimis.com 143 * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information. tag NO Login failed. Hanging here. I have to exit it manually with [Ctrl]+c xen11:~# tail /var/log/mail.log Dec 3 14:37:01 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.211], [email protected] Dec 3 14:37:01 xen11 imapd: LOGIN: ip=[::ffff:192.168.0.211], password=mypasswd Dec 3 14:37:01 xen11 authdaemond: received auth request, service=imap, authtype=login Dec 3 14:37:01 xen11 authdaemond: authmysql: trying this module Dec 3 14:37:01 xen11 authdaemond: SQL query: SELECT id, "", clear, uid, gid, home, concat(home,'/',maildir), "", name, "" FROM users WHERE id = "[email protected]" AND (enabled=1) Dec 3 14:37:01 xen11 authdaemond: supplied password does not match clearpasswd Dec 3 14:37:01 xen11 authdaemond: authmysql: REJECT - try next module Dec 3 14:37:01 xen11 authdaemond: FAIL, all modules rejected Dec 3 14:37:02 xen11 imapd: LOGIN FAILED, [email protected] , ip=[::ffff:192.168.0.211] Dec 3 14:37:20 xen11 imapd: Disconnected, ip=[::ffff:192.168.0.211], time=19 Still fail. B.R. Stephen L On Wed, Dec 3, 2008 at 15:49, Gustavo Luiz Duarte <[email protected]> wrote: On Wed, Dec 3, 2008 at 15:27, Stephen Liu <[email protected]> wrote: --- Gustavo Luiz Duarte <[email protected]> wrote: On Wed, Dec 3, 2008 at 12:05, Stephen Liu <[email protected]> wrote: Hi Gustavo, I'll make 2 tests; 1) test1 - USING TEXT FILE 2) test2 - USING MYSQL I have cloned an image of the routing mail server for test2. Now proceed test1 first. --- Gustavo Luiz Duarte <[email protected]> wrote: Hi Stephen, You could use the transport table if the string "smtp:" wasn't there. Do you really want to use mysql for the lookup? If you have only 3 domain you could use a text file. USING TEXT FILE: $ cat << END > /etc/perdition_lookup.txt satimis.dnsalias.com:192.168.0.209 satimis.changeip.net:192.168.0.208 satimis.com:192.168.0.210 END $ makegdbm /etc/perdition_lookup.gdbm.db < /etc/perdition_lookup.txt $ perdition -m /etc/perdition_lookup.gdbm.db --query_key "\d" Package installed - perdition-mysql # apt-cache policy perdition-mysql perdition-mysql: Installed: 1.17-7etch1 Candidate: 1.17-7etch1 Version table: *** 1.17-7etch1 0 500 http://ftp.au.debian.org etch/main Packages 500 http://security.debian.org stable/updates/main Packages 100 /var/lib/dpkg/status # cat << END > /etc/perdition_lookup.txt satimis.dnsalias.com:192.168.0.209 satimis.changeip.net:192.168.0.208 satimis.com:192.168.0.210 END # which makegdbm /usr/bin/makegdbm # which perdition /usr/sbin/perdition # makegdbm /etc/perdition_lookup.gdbm.db < /etc/perdition_lookup.txt # perdition -m /etc/perdition_lookup.gdbm.db --query_key "\d" both without complaint Now I haven't figured out how to test perdition. There are 2 databases running on this routing mail server, MySQL maildb and perdition_lookup.gdbm.db. Do I need to stop MySQL maildb to test perdition? How can the remote mail clients connect their mail servers? What server settings shall I use? Please shed me some light. TIA No need for stopping you MySQL. If everything is wright (I haven't tested, I can have skipped something), you can point your mail clients to the hostname where perdition is installed and use it normally. Sorry I can't resolve how can the mail client (Evolution) find its server over Internet with following settings; The mail client doesn't know wich server to use. It always use the routing server. The routing server redirects it to the correct imap server. Make sure your are using the right protocol imap4 or imap4s. Server Type: IMAP Server : xen11.satimis.com (hostname of the routing mail server where perdition is running User: satimis satimis is user of satimis.com, satimis.changeip.net and satimis.dnsalias.com as well as user of the routing mail server, xen11.satimis.com I tried it without success. Note that perdition's default protocol is pop3. To use imap suply the option -P IMAP4 xen11:~# /etc/init.d/perdition start /usr/sbin/perdition.pop3 already running. Starting /usr/sbin/perdition.pop3s... Starting /usr/sbin/perdition.imap4... Starting /usr/sbin/perdition.imaps... How are you configuring perdition? Have you modified your /etc/init.d/perdition script to contain the correct parameters? xen11:~# hostname xen11.satimis.com pop3 is already running. I have to manually run /etc/init.d/perdition to start pop3s, imap4 and imaps You can use nc to test it: $ echo "tag login username password" | nc perdition_host 143 In username and password you use valid username and password for your real imap server. I suppose running above command on the routing mail server where perdition is installed. # echo "tag login satimis mypassword" | nc xen11.satimis.com 143 * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING fordistribution information. tag NO Login failed. For pop3: $ echo -e "user username\npass password | nc perdition_host 110 xen11:~# echo -e "user satimis\npass x11satimis | nc xen11.satimis.com 110 waiting for input You can look at perdition logs to find information about what is going on. No special configuration is need for your pop/imap servers. Just assure that they are listening on standard ports. I have only ONE external IP. All ports are forwarded to the routing mail server except port 53. B.R. Stephen L []'s Gustavo Duarte B.R. Stephen USING MYSQL: You have some alternatives: 1. Continue with your tblPerdition and populate it, so that user column has the domain, hostname column has the localIP and port column you leave empty (supposing your real pop/imap servers listen to standard ports). Then you would do (supposing you have mysql perdition library in /usr/lib): perdition -M /usr/lib/libperditiondb_mysql.so.0 --query_key "\d" -m "<dbhost>:<dbport>:dbPerdition:tblPerdition:perdition:perdition" (substituting <dbhost> and <dbport> by you db hostname and port) 2. Modify your transport table so that the string smtp and localIP are in diferent columns. Then you create a view concatenating them for the postfix query. A bit more complicated but easier to maintain when you have lots of domains and servers. []'s Gustavo Duarte On Wed, Dec 3, 2008 at 02:28, Stephen Liu <[email protected]> wrote: Hi Gustavo, The URL I sent you has information about using mysql as lookup library: http://www.vergenet.net/linux/perdition/perditiondb.5.shtml I suppose you're referring to following section; MYSQL This map library can be used by specifying the full path to the library using the -M|--map_library command line option or configuration file option. E.g. perdition -M /usr/lib/libperditiondb_mysql.so.0 ...... I'll start from there. I suppose the name of this database is "dbPerdition" to be created on MySQL mysql> create database dbPerdition; mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON dbPerdition.* TO 'perdition' IDENTIFIED by 'perdition'; the 1st "perdition" on above second line is "database user". The 2nd "perdition" is "database password". mysql> CREATE TABLE `tblPerdition` ( -> `user` varchar(128), null '' default '', -> `servername` varchar(255) null '' default '', -> `port` varchar(8) YES NULL, -> PRIMARY KEY (`user`), -> ) ; Afterwards I'll edit data on 'tblPerdition" table. The table you've shown doesn't have information about the hostnames/localIPs. Where is it? In the transport table? Yes. mysql> SELECT * from transport; +------+----------------------+--------------------+-----------+---------+ | pkid | domain | hostname | transport | enabled | +------+----------------------+--------------------+-----------+---------+ | 1 | satimis.dnsalias.com | smtp:192.168.0.209 | :[] | 1 | | 2 | satimis.changeip.net | smtp:192.168.0.208 | :[] | 1 | | 3 | satimis.com | smtp:192.168.0.210 | :[] | 1 | +------+----------------------+--------------------+-----------+---------+ 3 rows in set (0.00 sec) # cat /etc/postfix/mysql_transport_maps.cf user=mail password=mypassword dbname=maildb table=transport select_field=hostname where_field=domain hosts=127.0.0.1 additional_conditions = and enabled = 1 * end * I've never used mysql to do it, so I don't know the details and how flexible it is. Maybe you'll need to create a view in your database for the perdition lookup with the domain as key and the localIP as value. Unfortunately I don't have any example. But the two URLs I sent you have all information you need. In particular, look at --query_key option and mysql database access library. Whether you meant "--query_key FORMAT[,FORMAT...]:" on; http://www.vergenet.net/linux/perdition/perdition.8.shtml Thanks B.R. Stephen L Send instant messages to your online friends http://uk.messenger.yahoo.com ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users Send instant messages to your online friends http://uk.messenger.yahoo.com ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users Send instant messages to your online friends http://uk.messenger.yahoo.com ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users Send instant messages to your online friends http://uk.messenger.yahoo.com ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users Send instant messages to your online friends http://uk.messenger.yahoo.com ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users Send instant messages to your online friends http://uk.messenger.yahoo.com ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users Send instant messages to your online friends http://uk.messenger.yahoo.com ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users