GNU/Linux >> Znalost Linux >  >> Ubuntu

Zlepšení ochrany proti zneužití spamu v dovecotu omezením přístupu k poštovním účtům podle IP adresy (např. pomocí ISPConfig 3)

Co uděláme

Tento návod vám ukáže, jak přidat omezení IP na jednotlivé e-mailové účty při použití dovecot s MySQL .

To je zvláště užitečné, pokud potřebujete přistupovat k e-mailovému účtu pouze z jedné jediné IP nebo několika IP nebo pokud chcete zablokovat přístup k poštovnímu účtu konkrétním IP adresám (např. kvůli zneužití spamu).

Předpoklady

- fungující instalace na holubníku s virtuálními uživateli přes MySQL (nejlépe spravované ISPConfig 3)
Pokud nepoužíváte ISPConfig 3, možná budete muset změnit názvy databázových tabulek a/nebo sloupců v dotazech.

Změny ve vašem systému

Nejprve musíme vytvořit novou databázovou tabulku na vašem poštovním serveru . V tomto návodu jej přidáme do databáze ISPConfig dbispconfig .

Otevřete konzolu MySQL:
mysql -u root -D dbispconfig -p

Po přihlášení vytvořte novou tabulku omezení IP pomocí tohoto dotazu:

CREATE TABLE mail_user_ip_restriction (
    restriction_id INT(11) UNSIGNED NOT NULL auto_increment,
    mailuser_id INT(11) UNSIGNED NOT NULL DEFAULT '0',
    ip VARCHAR(50) NOT NULL DEFAULT '',
    mode ENUM('w','b') NOT NULL DEFAULT 'w',
    service VARCHAR(10) NOT NULL DEFAULT '',
    PRIMARY KEY (`restriction_id`),
    KEY `ident` (`mailuser_id`, `mode`, `service`, `ip`)
) ENGINE=MyISAM;

Nyní musíte změnit konfiguraci dovecot sql. V instalacích ISPConfig 3 (např. Debian/Ubuntu) by měl být umístěn v /etc/dovecot/dovecot-sql.conf

Změňte tyto řádky:

password_query = SELECT password FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n'

user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n'

(pokud nepoužíváte nejnovější verzi ISPConfig 3, řádky ve vaší konfiguraci se mohou mírně lišit)

komu:

password_query = SELECT m.password FROM mail_user as m LEFT JOIN mail_user_ip_restriction as r ON (r.mailuser_id = m.mailuser_id AND r.mode = 'w' AND r.service IN ('', '%Ls')) LEFT JOIN mail_user_ip_restriction as rb ON (rb.mailuser_id = m.mailuser_id AND rb.ip = '%r' AND rb.mode = 'b' AND rb.service IN ('', '%Ls')) WHERE (m.login = '%u' OR m.email = '%u') AND m.disable%Ls = 'n' AND (r.ip IS NULL OR r.ip = '%r') AND rb.ip IS NULL

user_query = SELECT m.email as user, m.maildir as home, CONCAT('maildir:', m.maildir, '/Maildir') as mail, m.uid, m.gid, CONCAT('*:storage=', m.quota, 'B') AS quota_rule, CONCAT(m.maildir, '/.sieve') as sieve FROM mail_user as m LEFT JOIN mail_user_ip_restriction as r ON (r.mailuser_id = m.mailuser_id AND r.mode = 'w' AND r.service IN ('', '%Ls')) LEFT JOIN mail_user_ip_restriction as rb ON (rb.mailuser_id = m.mailuser_id AND rb.ip = '%r' AND rb.mode = 'b' AND rb.service IN ('', '%Ls')) WHERE (m.login = '%u' OR m.email = '%u') AND m.disable%Ls = 'n' AND (r.ip IS NULL OR r.ip = '%r') AND rb.ip IS NULL

Nyní restartujte dovecot:
restart služby dovecot (nebo /etc/init.d/dovecot restart , v závislosti na vašem systému)

Sledujte nyní e-mail a/nebo systémový protokol! Pokud ve svém holubníku vidíte chyby, pak se něco pokazilo a měli byste zkontrolovat své změny nebo je vrátit zpět.
Pokud vše běží jako předtím, pak jste připraveni jít.

Jak omezit přístup

Nyní máte různé možnosti, jak omezit přístup k poštovní schránce. Ukážu vám způsob, jak to udělat s SQL dotazy na mysql konzoli, ale můžete samozřejmě použít phpMyAdmin.

Blokovat IP

Chcete-li jedné IP zablokovat přístup k poštovnímu účtu, musíte ji přidat do tabulky omezení v režimu 'b':

Nejprve potřebujete mailuser_id pro svůj poštovní účet (např. [email protected]). Toto je jednoduchý SQL dotaz:

VYBERTE `mailuser_id` FROM `mail_user` WHERE `email` ='[e-mail chráněný]';

To vrátí číslo (id), jako je 12345. Nyní přidejte záznam omezení pro toto id:

INSERT INTO `mail_user_ip_restriction` VALUES (NULL, 12345, '123.234.123.234', 'b', '');

Tento záznam zablokuje adresu IP 123.234.123.234 z přístupu ke všem službám (pop3, imap, smtp) poštovního účtu 12345.

Pokud chcete, aby IP mohla přistupovat k pop a imap, ale zabránit jí v používání smtp (odesílání e-mailů), můžete místo toho přidat tento záznam:

VLOŽTE DO HODNOT `mail_user_ip_restriction` (NULL, 12345, '123.234.123.234', 'b', 'smtp');

Můžete přidat více služeb, jako je tato, pro každou jednu položku. Mějte však na paměti, že položka '' blokuje všechny služby.

Omezit na konkrétní IP adresy

Stejně jako můžete blokovat, můžete dokonce omezit používání poštovních účtů na jednotlivé IP adresy. To znamená, že k účtu nemá přístup ŽÁDNÁ jiná IP než specifikovaná. Jednoduše musíte vytvořit položku s režimem 'w' namísto 'b':

INSERT INTO `mail_user_ip_restriction` VALUES (NULL, 12345, '123.234.123.234', 'w', 'pop3');
INSERT INTO `mail_user_ip_restriction` VALUES (.323521, .3. 'w', 'smtp');

Tento záznam dělá následující:
- všechny IP mohou používat imap účtu 12345 ([e-mail chráněný])
- pouze IP 123.234.123.234 může pro tento účet používat pop3 – všechny ostatní IP ne!
- pouze IP 123.234.123.235 může používat smtp pro tento účet - všechny ostatní IP ne!

Samozřejmě můžete kombinovat všechny funkce a vytvořit více IP záznamů pro různé režimy a služby.

Případ použití

Dobře, teď něco ze skutečného života. Představte si, že máte e-mailovou adresu, kterou váš internetový obchod používá k odesílání e-mailů. Nikdo jiný by neměl posílat e-maily pomocí tohoto účtu, ale chtěli byste zkontrolovat, zda někdo neodpovídá na e-maily vašeho obchodu. Toto opět provede pouze imap, nikoli pop3.

Toto jsou položky, které byste vytvořili v tomto případě, kde 10.0.0.101 je ip webového serveru vašeho obchodu a 12345 je mailuser_id vašeho poštovního účtu.

INSERT INTO `mail_user_ip_restriction` VALUES (NULL, 12345, '10.0.0.101', 'w', 'smtp');
INSERT INTO `mail_user_ip_restriction` VALUES (NULL, 12345 ', 'pop3');

Žádná jiná IP než 10.0.0.101 nemá přístup k smtp tohoto konkrétního poštovního účtu a nikdo pro to nemá přístup k pop3. Imap je dostupný pro všechny ips.

Nezapomeňte na IPv6! Pokud váš server nebo klient, kterého chcete zadat, má adresu ipv4 a ipv6, musíte přidat obě!


Ubuntu
  1. Jak získám přístup ke svým e-mailovým účtům prostřednictvím ovládacího panelu HostMySite?

  2. Jak nainstalovat Spamassassin s Postfixem a Dovecotem na Ubuntu/Debian Server

  3. Jak nakonfigurovat poštovní server POP3 / IMAP s Dovecot na Ubuntu 18.04

  1. The Perfect Server – Ubuntu 15.04 (Vivid Vervet) s Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot a ISPConfig 3

  2. The Perfect Server - Ubuntu 15.10 (Wily Werewolf) s Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot a ISPConfig 3

  3. Vylepšete svůj filtr spamu Plesk pomocí hodnocení a školení

  1. The Perfect Server - Ubuntu 16.10 (Yakkety Yak) s Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot a ISPConfig 3.1

  2. The Perfect Server - Ubuntu 17.04 (Zesty Zapus) s Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot a ISPConfig 3.1

  3. The Perfect Server - Ubuntu 17.10 (Artful Aardvark) s Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot a ISPConfig 3.1