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.
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ř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;
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');
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).