exim.conf + srs
sierpień 14th, 2007Dziś przeniosłem ostatni element konfiguracji exim’a do bazy danych. Dokładniej baza adresów wykorzytanych przy SRS trafiła do MySQL
CREATE TABLE mta_srs (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
rewrite_key VARCHAR(64) NOT NULL DEFAULT '',
email_address VARCHAR(255) NOT NULL DEFAULT '',
create_time DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY mta_srs_uidx(rewrite_key,email_address)
) Type=MyISAM;
A później w pliku exim.conf należy dodać makra dla zapytań SQL
MYSQL_Q_SRS_ADD = INSERT INTO mta_srs (rewrite_key, email_address, create_time) \
VALUES ('${srs_db_key}', '${srs_db_address}', NOW() ) \
ON DUPLICATE KEY \
UPDATE create_time = now()
MYSQL_Q_SRS_GET = SELECT email_address \
FROM mta_srs \
WHERE rewrite_key = '${srs_db_key}' AND \
create_time > SUBDATE(NOW(), INTERVAL 30 day) \
LIMIT 1
Oraz niezbędne wpisy dotyczące ustawień SRS
hide srs_config = OjStraszneHaslo
srs_maxage = 60
srs_hashlength = 8
Ostatnim elementem jest zmodyfikowanie router’a odpowiedzialnego za forward oraz dodanie dedykowanego dla potrzeb SRS.
user_forward:
debug_print = "R: UserForward for $local_part@$domain (with SRS)"
driver = redirect
srs = forward
srs_dbinsert = ${lookup mysql{MYSQL_Q_SRS_ADD}{yes}{no}}
no_verify
no_expn
check_ancestor
(....)
srs_router:
driver = redirect
srs = reverseandforward
srs_dbinsert = ${lookup mysql{MYSQL_Q_SRS_ADD}{yes}{no}}
srs_dbselect = ${lookup mysql{MYSQL_Q_SRS_GET}{$value}{0}}
data = ${srs_recipient}
Wszystko
P.S. Należy pamiętać aby użytkownik, na prawach którego exim łączy się z bazą MySQL miał prawo do edycji tabeli mta_srs