Cara Mengatur Server Postfix Mail dan Dovecot dengan Basis Data (MariaDB) dengan aman - Bagian 1

Cara Mengatur Server Postfix Mail dan Dovecot dengan Basis Data (MariaDB) dengan aman - Bagian 1
Setup Server Mail Postfix di Centos 7

Di dalam 3-artikel seri kami akan membahas cara mengatur a Postfix server surat dengan perlindungan antivirus dan spam di a Centos 7 kotak. Harap perhatikan instruksi ini juga berfungsi pada distribusi lain seperti RHEL/Fedora Dan Debian/Ubuntu.

Bagian 1: Cara membuat dan mengatur database server mail postfix (mariadb) dengan aman Bagian 2: Cara mengonfigurasi postfix dan dovecot dengan pengguna domain virtual di linux Bagian 3: Cara Menambahkan Antivirus dan Perlindungan Spam ke Server Postfix Mail dengan Clamav dan Spamassassin Bagian 4: Cara Menginstal dan Mengkonfigurasi Klien Webmail RoundCube dengan Pengguna Virtual di Postfix Bagian 5: Cara Menggunakan Sagamor, Antivirus/Antispam Gateway untuk Melindungi Server Surat Anda

Rencana kami terdiri dalam menyimpan akun email dan alias di a Mariadb Database yang untuk kenyamanan kita, akan dikelola melalui phpMyadmin.

Jika Anda memilih untuk tidak menginstal phpMyadmin, Atau berurusan dengan server CLI saja, kami juga akan memberikan kode yang setara untuk membuat tabel database yang akan digunakan di seluruh seri ini.

Karena menjaga dan menjalankan server surat adalah salah satu tugas penting yang biasanya ditugaskan untuk administrator dan insinyur sistem, kami juga akan memberikan beberapa tips untuk menjalankan layanan kritis ini secara efisien di lingkungan produksi.

Buat catatan A dan MX untuk domain di DNS

Sebelum melanjutkan, ada beberapa prasyarat yang harus dipenuhi:

1. Anda akan memerlukan domain yang valid yang terdaftar melalui pendaftar domain. Dalam seri ini kami akan menggunakan www.Linuxnewz.com, yang terdaftar Ayo ayah.

2. Domain tersebut harus diarahkan ke IP eksternal dari VPS atau penyedia hosting cloud Anda. Jika Anda melakukan hosting sendiri server surat Anda, Anda dapat menggunakan layanan yang ditawarkan oleh Freedns (memerlukan pendaftaran).

Bagaimanapun, Anda harus menyiapkan A Dan MX Catatan untuk domain Anda juga (Anda dapat mempelajari lebih lanjut tentang catatan MX di FAQ ini dari Google).

Setelah ditambahkan, Anda dapat mencarinya menggunakan alat online seperti MXTOOLBOX atau Viewdns untuk memastikan mereka diatur dengan benar.

Penting: Harap dicatat bahwa mungkin butuh waktu (1-2 hari) sampai catatan DNS diperbanyak dan domain Anda tersedia. Sementara itu, Anda dapat mengakses VPS Anda melalui alamat IP -nya untuk melakukan tugas yang ditunjukkan di bawah ini.

3. Konfigurasikan Fqdn (Nama domain yang sepenuhnya memenuhi syarat) dari VPS Anda:

# hostnamectl set-hostname yourhostname 

Untuk mengatur nama host sistem, lalu edit /etc/host sebagai berikut (ganti AAA.BBB.CCC.Ddd, nama Anda, Dan Domain Anda dengan IP publik server Anda, nama host Anda, dan domain terdaftar Anda):

AAA.BBB.CCC.DDD Anda Anda. Nama Anda.Domain Anda.com yourhostname 

Di mana nama Anda adalah nama host sistem yang ditetapkan sebelumnya hostnamectl memerintah.

Menginstal paket perangkat lunak yang diperlukan

4. Untuk menginstal paket perangkat lunak yang diperlukan seperti Apache, postfix, dovecot, mariadb, phpMyadmin, spamassassin, clamav, dll, Anda perlu mengaktifkan Epel gudang:

# YUM Instal Epel-Release 

5. Setelah Anda mengikuti langkah -langkah di atas, instal paket yang diperlukan:

Dalam sistem berbasis Centos:

# yum update && yum instal httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamv-peminda 

Dalam Debian dan Derivatif:

#Pattitude Update && Aptitude Instal Apache2 Postfix Dovecot-Core Dovecot-Imapd Dovecot-Pop3d Dovecot-Lmtpd Dovecot-Mysql Spamassassin ClAMAV CLAMAV-daemon-base mariadb-klien mariadb-server php5 phpmin 

6. Mulai dan Aktifkan Server Web dan Database:

Dalam sistem berbasis Centos:

# Systemctl Aktifkan httpd mariadb # systemctl start httpd mariadb 

Dalam Debian dan Derivatif:

# Systemctl Aktifkan Apache2 Mariadb # Systemctl Mulai Apache2 Mariadb 

Saat instalasi selesai dan layanan di atas diaktifkan dan dijalankan, kami akan memulai dengan mengatur database dan tabel untuk menyimpan informasi tentang akun postfix mail.

Membuat Database Akun Mail Postfix

Untuk kesederhanaan, kami akan menggunakan phpMyadmin, alat yang dimaksudkan untuk menangani administrasi Mysql / Mariadb Database melalui antarmuka web, untuk membuat dan mengelola database email.

Namun, untuk masuk dan menggunakan alat ini, kita perlu mengikuti langkah -langkah ini:

7. Aktifkan Mariadb akun (Anda dapat melakukan ini dengan menjalankan mysql_secure_installation utilitas dari baris perintah, menetapkan kata sandi untuk root pengguna, dan mengatur pengaturan default yang diusulkan oleh alat kecuali “Larang login root dari jarak jauh?“:

Nonaktifkan login root mysql

atau membuat pengguna database baru:

Mariadb [(tidak ada)]> buat pengguna 'dba'@'localhost' diidentifikasi oleh 'yourpasswordhere'; Mariadb [(tidak ada)]> berikan semua hak istimewa di * . * Ke 'dba'@'localhost'; Mariadb [(tidak ada)]> hak istimewa flush; 
Buat Pengguna Database Baru

Aman Apache dengan sertifikat

8. Karena kami akan menggunakan aplikasi web untuk mengelola database server email, kami perlu mengambil tindakan pencegahan yang diperlukan untuk melindungi koneksi ke server. Jika tidak, kami phpMyadmin Kredensial akan melakukan perjalanan dengan teks biasa di atas kawat.

Untuk mengatur Keamanan Lapisan Transportasi (Tls) Di server Anda, ikuti langkah -langkah yang diuraikan di Bagian 8 Seri RHCE: Menerapkan HTTPS melalui TLS Menggunakan Layanan Keamanan Jaringan (NSS) untuk Apache sebelum melanjutkan lebih lanjut.

Catatan: Jika Anda tidak memiliki akses ke konsol server, Anda perlu menemukan cara lain untuk menghasilkan entropi yang diperlukan selama pembuatan kunci. Dalam hal ini, Anda mungkin ingin mempertimbangkan untuk menginstal Tools RNG dan berlari rngd -r /dev /urandom.

Konfigurasikan dan Amankan PHPMyAdmin

9. Di dalam /etc/httpd/conf.d/phpMyadmin.conf (Centos) atau /etc/phpMyadmin/apache.conf (Debian dan turunannya), temukan semua kemunculan baris berikut dan pastikan mereka menunjuk ke IP publik server Anda:

Membutuhkan IP AAA.BBB.CCC.DDD Izinkan dari AAA.BBB.CCC.Ddd 

Selain itu, nonaktifkan alias default dan buat yang baru untuk mengakses halaman login phpMyadmin Anda. Ini akan membantu mengamankan situs terhadap bot dan penyerang eksternal yang menargetkan www.Domain Anda.com/phpMyadmin atau www.Domain Anda.com/phpMyadmin.

#Alias ​​/phpMyadmin /usr /share /phpMyadmin #alias /phpMyadmin /usr /share /phpMyadmin alias /managedb /usr /share /phpMyadmin 

Juga, tambahkan baris berikut di dalam :

Membutuhkan semua yang diberikan 
Amankan phpMyadmin

Buat Apache VirtualHost untuk domain

10. Pastikan domain Anda ditambahkan ke situs yang diaktifkan. Membuat /etc/httpd/situs-tersedia/linuxnewz.com.conf (Centos) atau /etc/apache2/situs-tersedia/linuxnewz.com (Debian) dengan konten berikut (pastikan Root document, situs-tersedia, Dan Situs-Enabled direktori ada):

 SERVERNAME www.Linuxnewz.com Serverialis Linuxnewz.com Documentroot/var/www/linuxnewz.com/public_html errorLog/var/www/linuxnewz.com/error.Log CustomLog/var/www/linuxnewz.com/permintaan.Log Gabungan Opsi Indeks mengikuti tautan  

dan tautan simbolis:

Di Centos:
# ln -s/etc/httpd/situs -tersedia/linuxnewz.com.conf/etc/httpd/Situs-Enabled/LinuxNewz.com.conf 
Di Debian:
# A2ensite LinuxNewz.com 

Dan Anda sudah selesai.

Pengaturan database email postfix

11. Sekarang Anda dapat membuka phpMyadmin antarmuka di https: // www.Domain Anda.com/dikelola (Perhatikan itu dikelola adalah alias yang kami atur sebelumnya untuk direktori data phpMyadmin).

Jika itu tidak berhasil (yang dapat disebabkan oleh keterlambatan propagasi atau kurangnya konfigurasi catatan DNS) untuk saat ini Anda dapat mencoba menggunakan alamat IP publik server Anda alih -alih www.Domain Anda.com:

PHPMyAdmin login

Bagaimanapun, setelah Anda masuk ke phpMyadmin Anda akan melihat antarmuka berikut. Klik Baru Di bagian kiri:

Buat database baru di phpMyadmin

Masukkan nama untuk database (EmailServer_db Dalam hal ini, tidak perlu memilih kolasi) dan klik Membuat:

Masukkan nama basis data

12. Di layar berikutnya, pilih a nama Untuk tabel pertama (di mana kami akan menyimpan domain yang akan dikelola oleh server surat ini.

Harap dicatat bahwa bahkan ketika dalam seri ini kami hanya akan mengelola satu domain, Anda dapat menambahkan lebih banyak nanti) dan jumlah bidang yang Anda inginkan di dalamnya, lalu klik Pergi. Anda akan diminta untuk menyebutkan dan mengonfigurasi kedua bidang itu, di mana Anda dapat melanjutkan dengan aman seperti yang ditunjukkan pada gambar berikut:

Buat Tabel Basis Data

Saat Anda memilih UTAMA di bawah Indeks untuk Domainid, Terima nilai default dan klik Pergi:

Tambahkan Indeks Basis Data

Atau, Anda dapat mengklik Pratinjau SQL untuk melihat kode di bawah kap:

Buat tabel 'emailServer_db'.'Domains_tbl' ('domainid' int not null auto_increment, 'domainname' varchar (50) bukan null, kunci primer ('domainid')) engine = innodb; 
Kode indeks tabel basis data

Saat Anda siap, klik Menyimpan untuk mengkonfirmasi perubahan. Anda kemudian dapat mengklik Baru di bawah EmailServer_db Untuk terus membuat tabel:

Buat tabel di bawah database

13. Sekarang ikuti langkah -langkah ini untuk membuat sisa tabel. Klik pada SQL tab dan masukkan kode yang ditunjukkan untuk setiap objek database.

Perhatikan bahwa dalam hal ini kami memilih untuk membuat tabel menggunakan kueri SQL karena hubungan yang harus ditetapkan antara tabel yang berbeda:

Users_tbl

Buat tabel 'users_tbl' ('userid' int not null auto_increment, 'domainid' int not null, 'password' varchar (100) not null, 'email' varchar (100) bukan nol, kunci utama ('userid'), unik Kunci 'Email' ('Email'), Kunci Asing (DomainID) Referensi Domains_tbl (DomainID) di Delete Cascade) Engine = InnoDB; 
Buat tabel Pengguna Postfix

Anda harus mendapatkan pesan konfirmasi (jika tidak, phpmyadmin akan meminta kesalahan sintaksis):

Konfirmasi mysql

Alias_tbl

Buat tabel 'alias_tbl' ('aliasid' int not null auto_increment, 'domainid' int not null, 'sumber' varchar (100) bukan nol, 'tujuan' varchar (100) bukan nol, kunci utama ('aliasid'), asing Key (DomainID) Referensi Domains_tbl (DomainID) pada helete cascade) engine = innodb; 

(Klik Pergi Di bagian bawah untuk melanjutkan pembuatan tabel).

Hingga saat ini, Anda harus memiliki struktur basis data berikut:

Struktur basis data

Yang berarti Anda siap untuk mulai menambahkan beberapa catatan di bagian selanjutnya.

Membuat domain postfix, pengguna dan alias

14. Kami sekarang akan memasukkan catatan berikut ke dalam tiga tabel. Kata sandi untuk [Email dilindungi] Dan [Email dilindungi] akan dienkripsi dan Masukkan ke Users_tbl penyataan.

Juga, harap dicatat bahwa email yang dikirim ke [Email dilindungi] akan dialihkan ke [Email dilindungi]:

Masukkan ke domains_tbl (domainname) nilai ('linuxnewz.com '); Sisipkan ke Nilai Users_tbl (DomainID, Kata Sandi, Email) (1, Encrypt ('PasswordForFirstemailAccount', concat ('$ 6 $', substring (sha (rand ()), -16))), '[email dilindungi]'); Sisipkan ke Nilai Users_tbl (DomainID, Kata Sandi, Email) (1, Encrypt ('PasswordForSecondeMailAccount', Concat ('$ 6 $', Substring (Sha (Rand ()), -16))), '[Email Dilindungi]'); Masukkan ke nilai alias_tbl (domainid, sumber, tujuan) (1, '[email dilindungi]', '[email dilindungi]'); 

Setelah menambahkan domain kami, dua akun pengguna, dan alias email kami siap untuk terus menyiapkan server email kami di artikel berikutnya dari seri ini, tempat kami akan mengkonfigurasi Tempat perlindungan merpati Dan Postfix.

Ringkasan

Pada artikel ini kami telah mendaftarkan paket yang diperlukan untuk menginstal server email postfix dalam VPS CentOS 7, dan menjelaskan cara mengelola database yang mendasarinya menggunakan phpMyAdmin.

Dalam dua artikel berikutnya, kami akan meninjau konfigurasi dua program yang akan mengurus distribusi email untuk domain kami (Bagian 2) dan tunjukkan cara menambahkan perlindungan terhadap spam dan virus (Bagian 3) untuk server Anda.

Sampai saat itu, jangan ragu untuk menghubungi kami menggunakan formulir di bawah ini jika Anda memiliki pertanyaan atau komentar.