Re: Routing solution on mail servers with all domain pointing at the same externel IP
Stephen Liu <[email protected]>
| Newsgroups | gmane.mail.perdition.user |
|---|---|
| Message-ID | <[email protected]> |
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 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