Интеграция на Postfix с PostgreSQL, ІI

Продължение на Интеграция на Postfix с PostgreSQL, І

Както обещах, ще опиша докрай как можете да си улесните управлението на Postfix, като използвате база данни вместо стандартните за този сървър map-файлове.

Параметърът transport_maps

Този параметър се използва, когато искаме писмата към даден домейн или конкретен адрес да се пренасочват за обработка към друг транспорт - локален (local) или друг пощенски сървър по smtp (smtp:hostname).

Създавате примерна таблица:

CREATE TABLE transport (
address character varying(255) NOT NULL,
transport character varying(255) NOT NULL,
comments text
);


Създаваме примерен файл /etc/postfix/pgsql_transport_users:

/etc/postfix/pgsql_transport_users
# Потр. име за достъп до базата данни
user = postfix

password = [парола]
hosts = localhost

# Име на базата данни
dbname = postfix


select_field=transport
where_field=address



Описваме по познатия начин файла в /etc/postfix/main.cf:

transport_maps = pgsql:/etc/postfix/pgsql_transport_users

Пример:

INSERT INTO transport
('domain.com', 'smtp:mail.domain.com', 'Backup MX');
INSERT INTO transport
('user@domain.net', 'local', 'Any local alias');


Сега писмата към домейна domain.com няма да се обработват на нашия сървър, а ще се насочват чрез протокола SMTP към друг сървър, който е настроен да ги приема и обработва и на който се намират самите пощенски кутии на потребителите. Този прийом се ползва, когато нашият сървър играе ролята на резервен MX.

Вторият запис означава, че писмата за адреса user@domain.net няма да се насочват към подразбиращия се транспорт virtual, а ще отиват за обработка от програмата за локален трансфер (maildrop), която ще потърси запис за този адрес по подразбиране в /etc/alias. В /etc/alias вече можем да имаме описана команда за този адрес, към която писмата да се изпращат за въшна обработка например чрез pipe. Този прийом се ползва при пощенските списъци, при които писмата се обработват от външно приложение, когато съжителстват съмвестно с виртуални домейни и потребители.

Параметърът canonical_maps

Този параметър се използва, когато искаме Postfix да пренаписва адресите на потребителите, а не просто да пренасочва примерно чрез alias на един адрес към друг.

Създаваме примерна таблица:

CREATE TABLE canonical (
address character varying(255),
rewrite character varying(255),
comments text
);



Създаваме примерен файл /etc/postfix/pgsql_canonical:

/etc/postfix/pgsql_canonical
# Потр. име за достъп до базата данни
user = postfix

password = [парола]
hosts = localhost

# Име на базата данни
dbname = postfix


select_field = rewrite
where_field = address


Описваме файла в /etc/postfix/main.cf:

canonical_maps = pgsql:/etc/postfix/pgsql_canonical

Пример:

INSERT INTO canonical
('user@domain.net', 'user@domain.com', 'Former user');


Освен че писмата до user@domain.net ще се пренасочват към user@domain.com, в хедъра To: на писмото ще виждаме user@domain.com, а не user@domain.net. Т.е. Postfix е пренаписал съдържанието на хедъра, в който е видял съответното съвпадение.