Re: Routing solution on mail servers with all domain pointing at the same externel IP
"Gustavo Luiz Duarte" <[email protected]>
| Newsgroups | gmane.mail.perdition.user |
|---|---|
| Message-ID | <[email protected]> |
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) On Wed, Dec 3, 2008 at 23:57, Stephen Liu <[email protected]> wrote: > > Hi Gustavo, > > >> 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 > ______________________________________________ Perdition-users mailing list [email protected] http://lists.vergenet.net/listinfo/perdition-users