Sourceforge uses sendmail as a mail transport agent (MTA). A cron job dumps all members' email to an alias text file.
Another MTA, Exim, allows to check the aliases directly from the MySQL database. Thus we are going to use it as a replacement of sendmail.
Please note that you will need a Exim version compiled with MySQL support. So if you install it from a package, you need to check that. For more information, see http://www.exim.org.
This paragraph will not discuss the common Exim configuration but only the modifications that you need to run Sourceforge.
For security reasons, we suggest that you make the exim.conf file only readable by root and that you create a special MySQL user which can only select email and user_name in the user table.
# mysql mysql mysql> GRANT SELECT(user_name,email) on sourceforge.user to some_user@localhost identified by 'some_password'; mysql> FLUSH PRIVILEGES; mysql> quit
Then you have to add users.DOMAIN_NAME in the list of the local domains. Then you have to add this line in the beginning of the Exim conf file :
hide mysql_servers = "localhost/sourceforge/some_user/some_password"and a add a special director (it should be the first director) (a sample is given in SF_ROOT/misc/exim.directors)
forward_for_sourceforge: domains = users.DOMAIN_NAME driver = aliasfile file_transport = address_file query = "select email from user where user_name = '$local_part'" search_type = mysql user = nobody group = nogroup
Some alias are predefined on Sourceforge, you can find them in SF_ROOT/backend/zones/aliases.zone. This file is a good start to make your own alias file.