Cara Menyiapkan Pelayan Mel Postfix dan Dovecot dengan Pangkalan Data (MariaDB) dengan selamat - Bahagian 1

Cara Menyiapkan Pelayan Mel Postfix dan Dovecot dengan Pangkalan Data (MariaDB) dengan selamat - Bahagian 1
Server Mail Postfix Persediaan di CentOS 7

Di dalam ini 3-artikel siri kita akan membincangkan cara menubuhkan a Postfix pelayan mel dengan perlindungan antivirus dan spam di a Centos 7 kotak. Sila ambil perhatian arahan ini juga berfungsi pada pengagihan lain seperti RHEL/Fedora dan Debian/Ubuntu.

Bahagian 1: Cara membuat dan menyediakan pangkalan data pelayan pos postfix (MariaDB) dengan selamat Bahagian 2: Cara Mengkonfigurasi Postfix dan Dovecot dengan Pengguna Domain Maya di Linux Bahagian 3: Cara menambah perlindungan antivirus dan spam ke pelayan pos postfix dengan clamav dan spamassassin Bahagian 4: Cara Memasang dan Mengkonfigurasi Pelanggan Webmail Roundcube dengan Pengguna Maya di Postfix Bahagian 5: Cara Menggunakan Sagator, Gateway Antivirus/Antispam untuk melindungi pelayan mel anda

Pelan kami terdiri daripada menyimpan akaun e -mel dan alias dalam Mariadb pangkalan data yang untuk kemudahan kami, akan diuruskan melalui phpmyadmin.

Sekiranya anda memilih untuk tidak memasang phpmyadmin, Atau berurusan dengan pelayan CLI-Only, kami juga akan menyediakan kod setara untuk membuat jadual pangkalan data yang akan digunakan sepanjang siri ini.

Oleh kerana menyimpan pelayan mel dan berjalan adalah salah satu tugas penting yang biasanya diberikan kepada pentadbir sistem dan jurutera, kami juga akan memberikan beberapa petua untuk menjalankan perkhidmatan kritikal ini dengan cekap dalam persekitaran pengeluaran.

Buat rekod A dan MX untuk Domain di DNS

Sebelum meneruskan, terdapat beberapa prasyarat yang mesti dipenuhi:

1. Anda memerlukan domain yang sah yang didaftarkan melalui pendaftar domain. Dalam siri ini kita akan gunakan www.Linuxnewz.com, yang didaftarkan melalui Godaddy.

2. Domain tersebut mesti ditunjuk ke IP luaran VPS atau pembekal hosting awan anda. Sekiranya anda sendiri akan menjadi tuan rumah pelayan mel anda, anda boleh menggunakan perkhidmatan yang ditawarkan oleh Freedns (memerlukan pendaftaran).

Dalam apa jua keadaan, anda mesti menubuhkan A dan Mx Rekod untuk domain anda juga (anda boleh mengetahui lebih lanjut mengenai rekod MX dalam FAQ ini dari Google).

Setelah ditambah, anda boleh melihatnya menggunakan alat dalam talian seperti Mxtoolbox atau Viewdns untuk memastikan mereka disediakan dengan betul.

Penting: Sila ambil perhatian bahawa ia mungkin mengambil sedikit masa (1-2 hari) sehingga rekod DNS disebarkan dan domain anda tersedia. Sementara itu, anda boleh mengakses VP anda melalui alamat IPnya untuk melaksanakan tugas yang ditunjukkan di bawah.

3. Konfigurasikan FQDN (Nama domain yang berkelayakan sepenuhnya) VPS anda:

# hostnamectl set-hostname yourhostname 

Untuk menetapkan nama hos sistem, kemudian edit /etc/hos seperti berikut (ganti Aaa.BBB.CCC.DDD, Nama anda, dan Yourdomain Dengan IP awam pelayan anda, nama hos anda, dan domain berdaftar anda):

Aaa.BBB.CCC.Ddd yourhostname.Yourdomain.com yourhostname 

di mana Nama anda adalah nama hos sistem yang ditetapkan sebelum ini menggunakan Hostnamectl perintah.

Memasang pakej perisian yang diperlukan

4. Untuk memasang pakej perisian yang diperlukan seperti Apache, Postfix, Dovecot, MariaDB, Phpmyadmin, Spamassassin, Clamav, dan lain -lain, anda perlu membolehkan Epel repositori:

# yum memasang pelepasan epel 

5. Sebaik sahaja anda mengikuti langkah -langkah di atas, pasangkan pakej yang diperlukan:

Dalam sistem berasaskan CentOS:

# yum update && yum pasang httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav-scanner clamav-scanner-systemd clamav-data clamav-update Mariadb Mariadb phpmyadmin phpmyadmin 

Dalam Debian dan Derivatif:

# Kemas kini Aptitude & & Aptitude Pasang Apache2 Postfix Dovecot-Core Dovecot-Imapd Dovecot-Pop3d Dovecot-Lmtpd Dovecot-Mysql Spamassassin Clamav-Daemon Clamav-Base Mariadb-Server Phpmyadb-Server phpmyadb-klien phpmyadb-klien phpmyadb-klien phpmyadb-klien phpmyadb-klien phpmyadb-klien phpmyadb-klien phpmyadb-klien phpmyadb-klien phpmyad phpmyad 

6. Mulakan dan aktifkan pelayan web dan pangkalan data:

Dalam sistem berasaskan CentOS:

# Systemctl Dayakan Httpd MariaDB # Systemctl Mula Httpd Mariadb 

Dalam Debian dan Derivatif:

# Systemctl Dayakan Apache2 MariaDB # Systemctl Mula Apache2 Mariadb 

Apabila pemasangan selesai dan perkhidmatan di atas diaktifkan dan berjalan, kami akan bermula dengan menyediakan pangkalan data dan jadual untuk menyimpan maklumat mengenai akaun pos postfix.

Membuat Pangkalan Data Akaun Mail Postfix

Untuk kesederhanaan, kami akan menggunakan phpmyadmin, alat yang bertujuan untuk mengendalikan pentadbiran Mysql / Mariadb pangkalan data melalui antara muka web, untuk membuat dan menguruskan pangkalan data e -mel.

Walau bagaimanapun, untuk log masuk dan menggunakan alat ini, kita perlu mengikuti langkah -langkah ini:

7. Dayakan Mariadb akaun (anda boleh melakukan ini dengan menjalankan mysql_secure_installation utiliti dari baris arahan, memberikan kata laluan untuk akar pengguna, dan menetapkan tetapan lalai yang dicadangkan oleh alat kecuali "Tidak balak log masuk dari jauh?":

Lumpuhkan log masuk root mysql

atau sebaliknya membuat pengguna pangkalan data baru:

MariaDB [(Tiada)]> Buat Pengguna 'DBA'@'Localhost' yang dikenal pasti oleh 'YourPasswordHere'; MariaDB [(Tiada)]> Geran semua keistimewaan di * . * Ke 'dba'@'localhost'; Mariadb [(tidak)]> Keistimewaan Flush; 
Buat pengguna pangkalan data baru

Selamat Apache dengan sijil

8. Oleh kerana kami akan menggunakan aplikasi web untuk menguruskan pangkalan data pelayan e -mel, kami perlu mengambil langkah berjaga -jaga yang diperlukan untuk melindungi sambungan ke pelayan. Jika tidak, kami phpmyadmin kelayakan akan bergerak dalam teks biasa di atas kawat.

Untuk menubuhkan Keselamatan lapisan pengangkutan (TLS) di pelayan anda, ikuti langkah -langkah yang digariskan Bahagian 8 dari siri RHCE: Melaksanakan HTTPS melalui TLS menggunakan Perkhidmatan Keselamatan Rangkaian (NSS) untuk Apache sebelum meneruskan lebih lanjut.

Catatan: Sekiranya anda tidak mempunyai akses ke konsol pelayan, anda perlu mencari cara lain untuk menghasilkan entropi yang diperlukan semasa penciptaan utama. Dalam hal ini, anda mungkin ingin mempertimbangkan memasang RNG-Tools dan berjalan rngd -r /dev /urandom.

Konfigurasikan dan selamat phpmyadmin

9. Dalam /etc/httpd/conf.d/phpmyadmin.Conf (Centos) atau /etc/phpmyadmin/apache.Conf (Debian dan derivatif), cari semua kejadian baris berikut dan pastikan mereka menunjuk kepada IP awam pelayan anda:

Memerlukan IP AAA.BBB.CCC.DDD Benarkan dari AAA.BBB.CCC.DDD 

Di samping itu, lumpuhkan alias lalai dan buat yang baru untuk mengakses halaman log masuk phpmyadmin anda. Ini akan membantu menjamin tapak terhadap bot dan penyerang luaran yang mensasarkan www.Yourdomain.com/phpmyadmin atau www.Yourdomain.com/phpmyadmin.

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

Juga, tambahkan baris berikut di dalam :

Memerlukan semua yang diberikan 
Selamat phpmyadmin

Buat Apache VirtualHost untuk Domain

10. Pastikan domain anda ditambah ke tapak yang diaktifkan. Buat /etc/httpd/laman web yang tersedia/linuxnewz.com.Conf (Centos) atau /etc/apache2/tapak yang tersedia/linuxnewz.com (Debian) dengan kandungan berikut (pastikan Documentroot, Tapak-tapak tersedia, dan Tapak yang dibolehkan Direktori wujud):

 ServerName www.Linuxnewz.com serveralias linuxnewz.com dokumen/var/www/linuxnewz.com/public_html errorlog/var/www/linuxnewz.com/ralat.log customlog/var/www/linuxnewz.com/permintaan.Log Opsyen Gabungan Log berikut  

dan pautan simbolik:

Pada centos:
# ln -s/etc/httpd/tapak -tersedia/linuxnewz.com.conf/etc/httpd/enabled sites/linuxnewz.com.Conf 
Pada Debian:
# a2ensite linuxnewz.com 

Dan anda sudah selesai.

Penyediaan Pangkalan Data E -mel Postfix

11. Sekarang anda boleh membuka phpmyadmin antara muka di https: // www.Yourdomain.com/ManagedB (Perhatikan bahawa ManagedB adalah alias yang kami sediakan lebih awal untuk direktori data phpmyadmin).

Sekiranya itu tidak berfungsi (yang boleh disebabkan oleh kelewatan penyebaran atau kekurangan konfigurasi rekod DNS) buat masa ini anda boleh cuba menggunakan alamat IP awam pelayan anda dan bukannya www.Yourdomain.com:

Log masuk phpmyadmin

Dalam apa jua keadaan, setelah anda log masuk ke phpmyadmin, anda akan melihat antara muka berikut. Klik Baru di bahagian kiri:

Buat pangkalan data baru di phpmyadmin

Masukkan nama untuk pangkalan data (Emailserver_db Dalam kes ini, tidak perlu memilih pengumpulan) dan klik Buat:

Masukkan nama pangkalan data

12. Pada skrin seterusnya, pilih a nama untuk jadual pertama (di mana kami akan menyimpan domain pelayan mel ini akan menguruskan.

Sila ambil perhatian bahawa walaupun dalam siri ini kami hanya akan menguruskan satu domain, anda boleh menambah lebih banyak kemudian) dan bilangan medan yang anda mahukan di dalamnya, kemudian klik Pergi. Anda akan diminta untuk menamakan dan mengkonfigurasi kedua -dua bidang tersebut, di mana anda boleh meneruskan dengan selamat seperti yang ditunjukkan dalam imej berikut:

Buat jadual pangkalan data

Semasa anda memilih Utama di bawah Indeks untuk DomainID, terima nilai lalai dan klik Pergi:

Tambah indeks pangkalan data

Sebagai alternatif, anda boleh mengklik Pratonton SQL untuk melihat kod di bawah tudung:

Buat jadual 'e -melserver_db'.'Domains_tbl' ('domainId' int not null auto_increment, 'domainname' varchar (50) not null, kunci utama ('domainid')) enjin = innodb; 
Kod indeks jadual pangkalan data

Apabila anda sudah bersedia, klik Simpan untuk mengesahkan perubahan. Anda kemudian akan dapat mengklik Baru di bawah Emailserver_db Untuk terus membuat jadual:

Buat jadual di bawah pangkalan data

13. Sekarang ikuti langkah -langkah ini untuk membuat meja lain. Klik pada SQL tab dan masukkan kod yang ditunjukkan untuk setiap objek pangkalan data.

Perhatikan bahawa dalam kes ini kami memilih untuk membuat jadual menggunakan pertanyaan SQL kerana hubungan yang mesti ditubuhkan antara jadual yang berbeza:

Users_tbl

Buat jadual 'users_tbl' ('userid' int not null auto_increment, 'domainId' int not null, 'kata laluan' varchar (100) not null, 'e -mel' varchar (100) not null, kunci utama ('userid'), unik Kunci 'e -mel' ('e -mel'), kunci asing (domainID) rujukan domains_tbl (domainId) pada cascade padam) enjin = innoDB; 
Buat jadual pengguna postfix

Anda perlu mendapatkan mesej pengesahan (jika tidak, phpmyadmin akan meminta kesilapan sintaks):

Pengesahan MySQL

Alias_tbl

Buat jadual 'alias_tbl' ('aliasid' int not null auto_increment, 'domainid' int not null, 'sumber' varchar (100) not null, 'destinasi' varchar (100) not null, kunci utama ('aliasid'), asing Kunci (DomainID) Rujukan Domains_tbl (domainID) pada cascade padam) enjin = innoDB; 

(Klik Pergi di bahagian bawah untuk meneruskan penciptaan jadual).

Hingga ke tahap ini, anda harus mempunyai struktur pangkalan data berikut:

Struktur pangkalan data

Yang bermaksud anda sudah bersedia untuk menambah beberapa rekod di bahagian seterusnya.

Membuat domain postfix, pengguna dan alias

14. Kami sekarang akan memasukkan rekod berikut ke dalam tiga jadual. Kata laluan untuk [dilindungi e -mel] dan [dilindungi e -mel] akan disulitkan dan Masukkan ke Users_TBL penyata.

Juga, sila ambil perhatian bahawa e -mel dihantar ke [dilindungi e -mel] akan dialihkan ke [dilindungi e -mel]:

Masukkan ke dalam nilai domains_tbl (domainname) ('linuxnewz.com '); Masukkan ke dalam nilai users_tbl (domainID, kata laluan, e -mel) (1, enkripsi ('kata laluan Masukkan ke dalam nilai users_tbl (domainID, kata laluan, e -mel) (1, enkripsi ('passwordforsecondemailaccount', concat ('$ 6 $', substring (sha (rand ()), -16))), '[e -mel dilindungi]'); Masukkan ke dalam nilai alias_tbl (domainID, sumber, destinasi) (1, '[dilindungi e -mel]', '[dilindungi e -mel]'); 

Setelah menambah domain kami, dua akaun pengguna, dan alias e -mel kami bersedia untuk terus menyediakan pelayan e -mel kami dalam artikel seterusnya dalam siri ini, di mana kami akan mengkonfigurasi Dovecot dan Postfix.

Ringkasan

Dalam artikel ini, kami telah menyenaraikan pakej yang diperlukan untuk memasang pelayan e -mel Postfix di CentOS 7 VPS, dan menjelaskan cara menguruskan pangkalan data asas menggunakan phpmyadmin.

Dalam dua artikel yang akan datang, kami akan mengkaji semula konfigurasi kedua -dua program yang akan menjaga pengedaran e -mel untuk domain kami (Bahagian 2) dan menunjukkan kepada anda cara menambah perlindungan terhadap spam dan virus (Bahagian 3) untuk pelayan anda.

Sehingga itu, sila hubungi kami menggunakan borang di bawah jika anda mempunyai pertanyaan atau komen.