exim.conf + srs

sierpień 14th, 2007

Dziś przeniosłem ostatni element konfiguracji exim’a do bazy danych. Dokładniej baza adresów wykorzytanych przy SRS trafiła do MySQL

Konieczna była prosta tabela

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

Leave a Reply