[CentOS] Large scale Postfix/Cyrus email system for 100, 000+ users

Sun Oct 28 13:06:45 UTC 2007
mouss <mlist.only at free.fr>

Matt Shields wrote:
>> Heck, I see lots of circles where they wouldn't trust mysql for an
>> enterprise application so it seems clear that you are not talking about
>> stability or performance but rather familiarity and the amount of trust
>> you have in what you know.
>>
>> I would expect openldap to blow the doors off a mysql db but what do I
>> know? I deal in circles < 100 user accounts (small businesses).
>>
> 
> Wow it's amazing how off topic and how many opinions you get on a
> mailing list, when all you wanted to know was how do I specially do
> this or that.  That's why I stated what my environment was.
> 
> But, since numerous people have stated how mysql is inadequate to do
> what we want to do or in general for any task.  We currently use mysql
> in a replicated environment with LVS to balance the connections for
> our main websites that is all dynamic.  Last time I checked we were
> sustaining thousands of visitors per second 24 hours a day, which
> equaled about 3-4 thousand queries per second.
> 
> So, if it can handle that load and Google trusts it in their
> infrastructure, then I'm not gonna replace it.  It does what I need,
> it's reliable, it's fast and it has proven that it scales well.
> 
> I think the main problem when people say you shouldn't use this
> product or that product because it's not good enough is they haven't
> set it up properly.  They haven't taken the time to tune the server,
> the daemon, and the application.  Let's face it anyone can write a
> query to a database (like "select * from table") and if you put enough
> load behind it your performance is gonna suck no matter what your app
> or database is.  But if you take time to tune your code and your
> database and design it so it can scale, you can efficiently use
> applications like mysql.
> 
> Anyway, back to my original request.  You can use the "transport_maps"
> feature to dynamically lookup lmtp transports on a per account basis.
> I have figured it out, and for those that are curious I will post when
> I've finished documenting everything.

Requoting my first reply in this thread (some typos corrected):

===========
[transport]
an alternative is to use (per-user) transport_maps. something like

foo at example.com		relay:[hostN.example.com]


In both approaches, the mappings can be generated using sql statements
(mostly CONCAT). something like
...
query = SELECT concat('relay:[', host, '.example.com]')
	FROM User
	where '%u' = user and '%d' = domain

you get the idea I hope.

===========