GNU/Linux >> Linux の 問題 >  >> Ubuntu

IPアドレスでメールアカウントへのアクセスを制限することにより、dovecotでのスパム乱用保護を改善します(例:ISPConfig 3を使用)

何をするか

このハウツーでは、IP制限を追加する方法を説明します 単一のメールアカウント MySQLでdovecotを使用する場合

これは、1つまたは複数のIPからメールアカウントにアクセスする必要がある場合、または特定のIPアドレスがメールアカウントにアクセスするのをブロックする場合(スパムの悪用など)に特に役立ちます。

前提条件 --MySQLを介した仮想ユーザーとの作業中のdovecotインストール(推奨されるISPConfig 3管理)
ISPConfig 3を使用しない場合は、クエリのデータベーステーブルや列名を変更する必要があります。 システムの変更

まず、メールサーバー上に新しいデータベーステーブルを作成する必要があります。 。このハウツーでは、それをISPConfigデータベース dbispconfigに追加します。 。

MySQLコンソールを開きます:
mysql -u root -D dbispconfig -p

ログインしたら、次のクエリを使用して新しいIP制限テーブルを作成します。

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;

ここで、dovecotsqlconfigを変更する必要があります。 ISPConfig 3インストール(Debian / Ubuntuなど)では、 /etc/dovecot/dovecot-sql.confに存在する必要があります

これらの行を変更します:

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'

(最新バージョンのISPConfig 3を使用していない場合、構成の行が若干異なる場合があります)

宛先:

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

ここでdovecotを再起動します:
service dovecot restart (または /etc/init.d/dovecot restart 、システムによって異なります)

今すぐメールやシステムログに注目してください!鳩小屋からエラーが表示された場合は、問題が発生したため、変更を確認するか、元に戻す必要があります。
すべてが以前と同じように実行された場合は、準備ができています。

アクセスを制限する方法

メールボックスへのアクセスを制限するさまざまな可能性があります。 mysqlコンソールでSQLクエリを使用する方法を説明しますが、もちろんphpMyAdminを使用できます。

ブロックIP

単一のIPがメールアカウントにアクセスするのをブロックするには、モード'b'で制限テーブルに追加する必要があります:

まず、メールアカウントのmailuser_idが必要です(例:[メール保護])。これは単純なSQLクエリです:

SELECT `mailuser_id` FROM` mail_user` WHERE `email` ='[email protected]';

これにより、12345のような番号(id)が返されます。次に、このIDの制限エントリを追加します。

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

このエントリは、ip 123.234.123.234をブロックします メールアカウント12345のすべてのサービス(pop3、imap、smtp)にアクセスすることから。

ipがpopとimapにアクセスできるようにしたいが、smtp(メールの送信)を使用しないようにする場合は、代わりに次のエントリを追加できます。

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

このような複数のサービスを、それぞれに1つのエントリを追加できます。ただし、エントリ''はすべてのサービスをブロックすることに注意してください。

特定のIPに制限する

ブロックできるように、メールアカウントの使用を単一のIPに制限することもできます。これは、指定されたIP以外のIPがアカウントにアクセスできないことを意味します。 'b'の代わりにモード'w'でエントリを作成する必要があります:

INSERT INTO `mail_user_ip_restriction` VALUES(NULL、12345、 '123.234.123.234'、'w'、'pop3');
INSERT INTO` mail_user_ip_restriction` VALUES(NULL、12345、 '123.234.123.235'、 'w'、'smtp');

このエントリは次のことを行います。
-すべてのIPはアカウント12345のimapを使用できます([メール保護])
-このアカウントにpop3を使用できるのはip 123.234.123.234のみです-他のすべてのIPは使用できません!
-このアカウントにsmtpを使用できるのはip123.234.123.235のみです-他のすべてのipは使用できません!

もちろん、すべての機能を組み合わせて、異なるモードとサービスの複数のIPエントリを作成できます。

ユースケース

さて、今、いくつかの現実のもの。オンラインショップでメールを送信するために使用されるメールアドレスがあるとします。他の誰もこのアカウントでメールを送信するべきではありませんが、誰かがあなたのショップのメールに返信するかどうかを確認したいと思います。これも、pop3ではなくimapによってのみ実行されます。

これらは、この場合に作成するエントリです。ここで、10.0.0.101はショップのWebサーバーのIPであり、12345はメールアカウントのmailuser_idです。

INSERT INTO `mail_user_ip_restriction` VALUES(NULL、12345、 '10 .0.0.101'、'w'、'smtp');
INSERT INTO` mail_user_ip_restriction` VALUES(NULL、12345、'none'、'w '、' pop3');

10.0.0.101以外のIPは、この特定のメールアカウントのSMTPにアクセスできません。 そして、誰もそのためにpop3にアクセスすることはできません。 ImapはすべてのIPで利用できます。

IPv6を忘れないでください!指定するサーバーまたはクライアントにipv4アドレスとipv6アドレスがある場合は、両方を追加する必要があります!


Ubuntu
  1. 完璧なサーバー-Apache、PHP、MySQL、PureFTPD、BIND、Postfix、Dovecot、ISPConfig3を搭載したUbuntu15.04(Vivid Vervet)

  2. Ubuntuのプリロードでアプリケーションの起動速度を向上させる

  3. Ubuntu/DebianサーバーにPostfixとDovecotを使用してSpamassassinをインストールする方法

  1. 完璧なサーバー-Apache、PHP、MySQL、PureFTPD、BIND、Postfix、Dovecot、ISPConfig3.1を搭載したUbuntu16.10(Yakkety Yak)

  2. 完璧なサーバー-Apache、PHP、MySQL、PureFTPD、BIND、Postfix、Dovecot、ISPConfig3.1を搭載したUbuntu17.10(Artful Aardvark)

  3. 完璧なサーバー-Apache、PHP、MySQL、PureFTPD、BIND、Postfix、Dovecot、ISPConfig3.1を搭載したUbuntu16.04(Xenial Xerus)

  1. 完璧なサーバー-Apache、PHP、MySQL、PureFTPD、BIND、Postfix、Dovecot、ISPConfig3.1を搭載したUbuntu18.04(Bionic Beaver)

  2. WHMでグレイリストを使用して着信スパムを停止する方法

  3. HostMySiteのコントロールパネルからメールアカウントにアクセスするにはどうすればよいですか?