このハウツーでは、IP制限を追加する方法を説明します 単一のメールアカウント MySQLでdovecotを使用する場合 。
これは、1つまたは複数のIPからメールアカウントにアクセスする必要がある場合、または特定のIPアドレスがメールアカウントにアクセスするのをブロックする場合(スパムの悪用など)に特に役立ちます。
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がメールアカウントにアクセスするのをブロックするには、モード'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がアカウントにアクセスできないことを意味します。 '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アドレスがある場合は、両方を追加する必要があります!