GNU/Linux >> Belajar Linux >  >> Ubuntu

Tingkatkan perlindungan penyalahgunaan Spam di dovecot dengan membatasi akses ke akun email berdasarkan alamat IP (misalnya dengan ISPConfig 3)

Apa yang akan kami lakukan

Howto ini akan menunjukkan cara menambahkan pembatasan ip ke satu akun email saat menggunakan dovecot dengan MySQL .

Ini sangat berguna jika Anda perlu mengakses akun email hanya dari satu ip tunggal atau beberapa ip atau jika Anda ingin memblokir alamat ip tertentu agar tidak mengakses akun email (misalnya karena penyalahgunaan spam).

Prasyarat

- instalasi dovecot yang berfungsi dengan pengguna virtual melalui MySQL (lebih disukai ISPConfig 3-managed)
Jika Anda tidak menggunakan ISPConfig 3, Anda mungkin harus mengubah tabel database dan/atau nama kolom dalam kueri.

Perubahan pada sistem Anda

Pertama kita perlu membuat tabel database baru di server email Anda . Dalam cara ini kita akan menambahkannya ke database ISPConfig dbispconfig .

Buka konsol MySQL:
mysql -u root -D dbispconfig -p

Saat masuk, buat tabel pembatasan ip baru dengan kueri ini:

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;

Sekarang Anda harus mengubah konfigurasi dovecot sql. Pada instalasi ISPConfig 3 (mis. Debian/Ubuntu) itu harus berada di /etc/dovecot/dovecot-sql.conf

Ubah baris ini:

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'

(jika Anda tidak menggunakan ISPConfig 3 versi terbaru, baris dalam konfigurasi Anda mungkin sedikit berbeda)

ke:

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

Sekarang restart dovecot:
service dovecot restart (atau /etc/init.d/dovecot restart , tergantung pada sistem Anda)

Awasi email dan/atau log sistem sekarang! Jika Anda melihat kesalahan dari dovecot Anda, berarti ada yang tidak beres dan Anda harus memeriksa perubahan Anda atau mengembalikannya.
Jika semuanya berjalan seperti sebelumnya, maka Anda siap untuk pergi.

Cara membatasi akses

Anda memiliki berbagai kemungkinan untuk membatasi akses ke kotak surat sekarang. Saya akan menunjukkan cara melakukannya dengan kueri SQL di konsol mysql tetapi Anda tentu saja dapat menggunakan phpMyAdmin.

Blokir ip

Untuk memblokir satu ip agar tidak mengakses akun email, Anda harus menambahkannya ke tabel pembatasan dengan mode 'b':

Pertama, Anda memerlukan mailuser_id untuk akun email Anda (mis. [dilindungi email]). Ini adalah kueri SQL sederhana:

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

Ini akan mengembalikan nomor (id) seperti 12345. Sekarang tambahkan entri pembatasan untuk id ini:

MASUKKAN KE NILAI `mail_user_ip_restriction` (NULL, 12345, '123.234.123.234', 'b', '');

Entri ini akan memblokir ip 123.234.123.234 dari mengakses semua layanan (pop3, imap, smtp) akun email 12345.

Jika Anda ingin ip dapat mengakses pop dan imap tetapi mencegahnya menggunakan smtp (mengirim email), Anda dapat menambahkan entri ini sebagai gantinya:

MASUKKAN KE NILAI `mail_user_ip_restriction` (NULL, 12345, '123.234.123.234', 'b', 'smtp');

Anda dapat menambahkan beberapa layanan seperti ini, satu entri untuk masing-masing. Namun perlu diingat bahwa entri '' memblokir semua layanan.

Batasi ke ip tertentu

Seperti Anda dapat memblokir, Anda bahkan dapat membatasi penggunaan akun email ke ip tunggal. Ini berarti TIDAK ADA ip lain selain yang ditentukan yang dapat mengakses akun. Anda cukup membuat entri dengan mode 'w' alih-alih 'b':

MASUKKAN KE NILAI `mail_user_ip_restriction` (NULL, 12345, '123.234.123.234', 'w', 'pop3');
MASUKKAN KE NILAI `mail_user_ip_restriction` (NULL, 12345, '123.234.123.235', 'w', 'smtp');

Entri ini melakukan hal berikut:
- semua ips dapat menggunakan imap akun 12345 ([email protected])
- hanya ip 123.234.123.234 yang dapat menggunakan pop3 untuk akun ini - semua ip lainnya tidak!
- hanya ip 123.234.123.235 yang dapat menggunakan smtp untuk akun ini - semua ip lainnya tidak!

Tentu saja Anda dapat menggabungkan semua fitur dan membuat beberapa entri ip untuk mode dan layanan yang berbeda.

Use case

Ok, beberapa hal kehidupan nyata sekarang. Bayangkan Anda memiliki alamat surat yang digunakan oleh toko online Anda untuk mengirim surat. Tidak ada orang lain yang boleh mengirim email dengan akun ini tetapi Anda ingin memeriksa apakah seseorang membalas email toko Anda. Ini, sekali lagi, hanya akan dilakukan oleh imap, bukan pop3.

Ini adalah entri yang akan Anda buat dalam kasus ini, di mana 10.0.0.101 adalah ip server web dengan toko Anda dan 12345 adalah mailuser_id dari akun email Anda.

MASUKKAN KE NILAI `mail_user_ip_restriction` (NULL, 12345, '10.0.0.101', 'w', 'smtp');
MASUKKAN KE NILAI `mail_user_ip_restriction` (NULL, 12345, 'none', 'w ', 'pop3');

Tidak ada ip selain 10.0.0.101 yang dapat mengakses smtp dari akun email khusus ini dan tidak ada yang dapat mengakses pop3 untuk itu. Imap tersedia untuk semua IP.

Jangan lupa IPv6! Jika server atau klien yang ingin Anda tentukan memiliki alamat ipv4 dan ipv6, Anda harus menambahkan keduanya!


Ubuntu
  1. Server Sempurna - Ubuntu 15.10 (Wily Werewolf) dengan Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot, dan ISPConfig 3

  2. Server Sempurna - Ubuntu 17.10 (Artful Aardvark) dengan Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot, dan ISPConfig 3.1

  3. Server Sempurna - Ubuntu 16.04 (Xenial Xerus) dengan Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot, dan ISPConfig 3.1

  1. Server Sempurna - Ubuntu 18.04 (Bionic Beaver) dengan Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot, dan ISPConfig 3.1

  2. Bagaimana cara mengakses akun email saya melalui Panel Kontrol HostMySite?

  3. Cara Menginstal Spamassassin dengan Postfix dan Dovecot di Server Ubuntu/Debian

  1. Server Sempurna - Ubuntu 15.04 (Vivid Vervet) dengan Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot, dan ISPConfig 3

  2. Server Sempurna - Ubuntu 16.10 (Yakkety Yak) dengan Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot, dan ISPConfig 3.1

  3. Cara mengkonfigurasi server email POP3 / IMAP dengan Dovecot di Ubuntu 18.04