Konfigurace záložního MX serveru (Postfix, MySQL)

Konfigurace záložního MX serveru (Postfix, MySQL)

V předchozím článku jsem vám ukázal, jak nastavit plně funkční mailový server. Pokud máte serverů více a chcete mailovou zátěž rozložit mezi ně, musíte si nastavit záložní MX server. Jak to udělat se dozvíte v dnešním článku.

Server bude kontrolovat příchozí e-maily na spam, v MySQL databázi bude mít nastavené domény, které má přijímat a e-maily bude přeposílat na hlavní MX server.

Instalace potřebných balíčků

Předpokládám, že máte nainstalovaný funkční MySQL server.

Nainstalujte následující balíčky:

apt-get install postfix postfix-mysql spamassassin clamav amavisd-new postgrey arj bzip2 cabextract cpio file gzip nomarch pax rar unrar unzip zip pyzor razor libdbi-perl libdbd-mysql-perl

Vytvoření tabulky v MySQL

Vytvořte databázi a uživatele vyčleněného pouze pro Postfix. Poté vytvořte následující tabulku:

CREATE TABLE IF NOT EXISTS `domains` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `domain` varchar(50) NOT NULL,
 `transport` varchar(50) NOT NULL,
 `backupmx` tinyint(1) NOT NULL DEFAULT '1',
 `active` tinyint(1) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`),
 UNIQUE(`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Vložení domény

Pro každou doménu, pro kterou bude MX server přijímat e-maily, je třeba vložit řádek – transport je MTA, kam budou e-mail přeposlány (při použití smtp: jde o server, např. hlavní MX server):

INSERT INTO `domains` (`domain`, `transport`, `backupmx`, `active`) VALUES ('cesal.cz', 'smtp:hlavni.cesal.cz', '1', '1');

Konfigurace Postfixu

V /etc/postfix vytvořte soubor mysql_relay_domains_maps.cf a vložte do něj následující (změňte údaje pro připojení k databázi):

hosts = 127.0.0.1
user = mailserver
password = heslo
dbname = mailserver
table = domains
select_field = domain
where_field = domain
additional_conditions = and backupmx = '1' and active = '1'

Do nového souboru mysql_virtual_transport.cf vložte následující (změňte údaje pro připojení k databázi):

hosts = 127.0.0.1
dbname = mailserver
user = mailserver
password = heslo
table = domains
select_field = transport
where_field = domain
additional_conditions = and backupmx = '1' and active = '1'

V souboru /etc/postfix/main.cf upravte parametry na následující hodnoty:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no

smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_destination,
 check_client_access hash:/etc/postfix/rbl_override,
 reject_invalid_hostname,
 reject_unauth_pipelining,
 reject_non_fqdn_sender,
 reject_unknown_sender_domain,
 reject_non_fqdn_recipient,
 reject_unknown_recipient_domain, reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, permit

smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, check_policy_service inet:127.0.0.1:10023, permit

myhostname = lama.cesal.cz
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relay_domains = mysql:/etc/postfix/mysql_relay_domains_maps.cf
transport_maps = mysql:/etc/postfix/mysql_virtual_transport.cf
# relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
inet_interfaces = all
inet_protocols = ipv4
content_filter = smtp-amavis:[127.0.0.1]:10024
header_checks = regexp:/etc/postfix/header_checks

Přepište také parametr myhostname na vaše plné doménové jméno a mynetworks kromě lokálního počítače obsahují IP adresy, ze kterých server přijímá e-maily bez ověření (přihlášení uživatele).

master.cf bude stejný, jako v článku o hlavní MX serveru, ale odeberte poslední řádek (dovecot).