postfix-users March 2011 archive
Main Archive Page > Month Archives  > postfix-users archives
postfix-users: Re: Tuning queue life time against some retry err

Re: Tuning queue life time against some retry errors.

From: Reindl Harald <h.reindl_at_nospam>
Date: Sun Mar 20 2011 - 20:24:34 GMT
To: postfix-users@postfix.org

Am 20.03.2011 21:02, schrieb Raven:
> On Sat, 2011-03-19 at 20:57 +0100, Reindl Harald wrote:
>> Am 19.03.2011 19:32, schrieb Ralf Hildebrandt:
>>> * David Touzeau <david@touzeau.eu>:
>>>
>>>> Thanks for this procedure but this is not a bug/error request but an
>>>> howto request.
>>>
>>> What I'm doing is this (just a few examples):
>>>
>>> alo.com error:5.1.2 You probably meant aol.com, not alo.com
>>> aoll.com error:5.1.2 You probably meant aol.com, not aoll.com
>>> aaol.com error:5.1.2 You probably meant aol.com, not aaol.com
>>> aiol.com error:5.1.2 You probably meant aol.com, not aiol.com
>>> aol.com.de error:5.1.2 You probably meant aol.com, not aol.com.de
>>
>> this is a cool solution i will implement tonight in our dbmail/postfix-backend
>> with a seperate sql-table and an extended view for the transport-query
>>
>> there are not much mistype-domains and a direct reject for some is much better
>> than any delay and side-effects for working domains
>>
>> thank you for the idea!
>>
>>
>
> Hi guys.
> This seems like a great idea. I would like to implement the same thing
> and store the domain typos in a mysql table.
>
> If the table has two columns, eg. MISSTYPEDDOMAIN and RESPONSE, how
> would I go about to configure $smtpd_recipient_restrictions with the
> appropriate SQL query?

you are wrong!
we are speaking from outgoing-messages, a little difference
because you will not get misstyped domains to your MTA

CREATE TABLE IF NOT EXISTS `dbma_mta` (
  `mydestination` varchar(35) NOT NULL DEFAULT '',
  `transport` varchar(128) NOT NULL DEFAULT '',
  PRIMARY KEY (`mydestination`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

CREATE TABLE IF NOT EXISTS `dbma_transports_error` (

  `mydestination` varchar(35) NOT NULL DEFAULT '',
  `transport` varchar(128) NOT NULL DEFAULT '',
  PRIMARY KEY (`mydestination`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

CREATE VIEW `dbma_transports` AS
 SELECT mydestination,transport
 FROM `dbma_mta`
 UNION (select mydestination,transport from `dbma_transports_error`);
________________________________________

transport_maps = mysql:/etc/postfix/mysql-transport.cf

[root@mail:~]$ cat /etc/postfix/mysql-transport.cf
user = dbmailro
password = ***************
dbname = dbmail
hosts = unix:/var/lib/mysql/mysql.sock inet:10.0.0.120:3307
query = select transport from dbma_transports where mydestination='%s' or mydestination='%d' order by
transport desc limit 1;
________________________________________

In "dbma_mta" i have the real transports (in our case dbmail-lmtp:127.0.0.1:24)
and in "dbma_transports_error" the error-domains because i would never mix this
to get not confused sooner or later