Di dalam 3-artikel seri kita akan membahas cara mengatur a Postfix server email dengan antivirus dan perlindungan spam di a CentOS 7 kotak. Harap perhatikan bahwa instruksi ini juga berfungsi pada distribusi lain seperti RHEL/Fedora dan Debian/Ubuntu.
Bagian 1: Cara Membuat dan Mengatur Database Server Surat Postfix (MariaDB) dengan Aman
Paket kami terdiri dari penyimpanan 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 khusus CLI, kami juga akan menyediakan kode yang setara untuk membuat tabel database yang akan digunakan di seluruh rangkaian ini.
Karena menjaga dan menjalankan server email adalah salah satu tugas penting yang biasanya ditugaskan ke sistem administrator dan insinyur, kami juga akan memberikan beberapa kiat untuk menjalankan layanan penting ini secara efisien dalam produksi lingkungan.
Sebelum melangkah lebih jauh, ada beberapa prasyarat yang harus dipenuhi:
1. Anda akan memerlukan domain yang valid terdaftar melalui pendaftar domain. Dalam seri ini kita akan menggunakan www.linuxnewz.com
, yang didaftarkan melalui Ayo ayah.
2. Domain tersebut harus diarahkan ke IP eksternal VPS atau penyedia hosting awan Anda. Jika Anda menghosting sendiri server email Anda, Anda dapat menggunakan layanan yang ditawarkan oleh FreeDNS (memerlukan pendaftaran).
Bagaimanapun, Anda harus mengatur SEBUAH
dan MX
catatan untuk domain Anda juga (Anda dapat mempelajari lebih lanjut tentang data MX di FAQ ini dari Google).
Setelah ditambahkan, Anda dapat mencarinya menggunakan alat online seperti Kotak Alat Mx atau LihatDNS untuk memastikan mereka diatur dengan benar.
Penting: Harap dicatat bahwa mungkin perlu beberapa saat (1-2 hari) hingga data DNS disebarkan dan domain Anda tersedia. Sementara itu, Anda dapat mengakses VPS Anda melalui alamat IP-nya untuk melakukan tugas-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/hosts sebagai berikut (ganti AAA.BBB.CCC.DDD, namahostanda, dan domainmu dengan IP publik server Anda, nama host Anda, dan domain terdaftar Anda):
AAA.BBB.CCC.DDD namahostanda.domainanda.com namahostanda.
di mana namahostanda adalah nama host sistem yang ditetapkan sebelumnya menggunakan nama host ectl memerintah.
4. Untuk menginstal paket perangkat lunak yang diperlukan seperti Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, dll, Anda harus mengaktifkan EPEL gudang:
# yum install epel-release.
5. Setelah Anda mengikuti langkah-langkah di atas, instal paket-paket yang diperlukan:
# yum update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin.
# pembaruan aptitude && aptitude install apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin.
6. Mulai dan aktifkan server web dan database:
# systemctl aktifkan httpd mariadb. # systemctl mulai httpd mariadb.
# systemctl aktifkan apache2 mariadb. # systemctl mulai apache2 mariadb.
Ketika instalasi selesai dan layanan di atas diaktifkan dan berjalan, kita akan memulai dengan menyiapkan database dan tabel untuk menyimpan informasi tentang akun email Postfix.
Untuk mempermudah, kita 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 harus mengikuti langkah-langkah berikut:
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?“:
atau buat pengguna basis data baru:
MariaDB [(none)]> BUAT PENGGUNA 'dba'@'localhost' DIIDENTIFIKASI DENGAN 'YourPasswordHere'; MariaDB [(tidak ada)]> HIBAH SEMUA HAK ISTIMEWA PADA *. * KE 'dba'@'localhost'; MariaDB [(tidak ada)]> HAK ISTIMEWA;
8. Karena kita akan menggunakan aplikasi web untuk mengelola database server email, kita perlu mengambil tindakan pencegahan yang diperlukan untuk melindungi koneksi ke server. Jika tidak, kami phpMyAdmin kredensial akan berjalan dalam teks biasa melalui kabel.
Untuk mengatur Keamanan Lapisan Transportasi (TLS) di server Anda, ikuti langkah-langkah yang dijelaskan di Bagian 8 dari seri RHCE: Menerapkan HTTPS melalui TLS menggunakan Network Security Service (NSS) untuk Apache sebelum melangkah lebih jauh.
Catatan: jika Anda tidak memiliki akses ke konsol server, Anda perlu mencari cara lain untuk menghasilkan entropi yang diperlukan selama pembuatan kunci. Dalam hal ini, Anda mungkin ingin mempertimbangkan untuk menginstal rng-alat dan berlari rngd -r /dev/urandom.
9. Di dalam /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) atau /etc/phpmyadmin/apache.conf (Debian dan turunannya), cari 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 dari bot dan penyerang eksternal yang menargetkan www.domainanda.com/phpmyadmin atau www.domainanda.com/phpMyAdmin.
#Alias /phpMyAdmin /usr/share/phpMyAdmin. #Alias /phpmyadmin /usr/share/phpMyAdmin. Alias /managedb /usr/share/phpMyAdmin.
Juga, tambahkan baris berikut di dalam :
Mengharuskan semua diberikan.
10. Pastikan domain Anda ditambahkan ke situs yang diaktifkan. Membuat /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) atau /etc/apache2/sites-available/linuxnewz.com (Debian) dengan isi sebagai berikut (pastikan Akar Dokumen, situs-tersedia, dan situs-diaktifkan direktori ada):
ServerName www.linuxnewz.com ServerAlias linuxnewz.com DocumentRoot /var/www/linuxnewz.com/public_html ErrorLog /var/www/linuxnewz.com/error.log CustomLog /var/www/linuxnewz.com/requests.log gabungan Indeks Opsi IkutiSymLink.
dan tautan simbolis:
# ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf.
# a2ensite linuxnewz.com.
dan Anda selesai.
11. Sekarang Anda dapat membuka phpMyAdmin antarmuka di https://www.yourdomain.com/managedb
(perhatikan bahwa dikelolab adalah alias yang kita atur sebelumnya untuk direktori data phpMyAdmin).
Jika itu tidak berhasil (yang dapat disebabkan oleh penundaan dalam propagasi atau kurangnya konfigurasi catatan DNS) untuk saat ini Anda dapat mencoba menggunakan alamat IP publik server Anda alih-alih www.domainanda.com:
Bagaimanapun, setelah Anda masuk ke phpMyAdmin Anda akan melihat antarmuka berikut. Klik Baru di bagian kiri:
Masukkan nama untuk database (EmailServer_db dalam hal ini, tidak perlu memilih Collation) dan klik Membuat:
12. Di layar berikutnya, pilih a nama untuk tabel pertama (tempat kami akan menyimpan domain yang akan dikelola oleh server email ini.
Harap dicatat bahwa meskipun 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 memberi nama dan mengonfigurasi kedua bidang tersebut, di mana Anda dapat melanjutkan dengan aman seperti yang ditunjukkan pada gambar berikut:
Ketika Anda memilih UTAMA dibawah Indeks untuk DomainId, terima nilai default dan klik Pergi:
Atau, Anda dapat mengklik Pratinjau SQL untuk melihat kode di bawah tenda:
CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT, `DomainName` VARCHAR(50) NOT NULL, PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;
Saat Anda siap, klik Menyimpan untuk mengkonfirmasi perubahan. Anda kemudian dapat mengklik Baru dibawah EmailServer_db untuk melanjutkan membuat tabel:
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 kasus ini kami memilih untuk membuat tabel menggunakan kueri SQL karena hubungan yang harus dibuat antara tabel yang berbeda:
CREATE TABLE `Users_tbl` ( `UserId` INT NOT NULL AUTO_INCREMENT, `DomainId` INT NOT NULL, `password` VARCHAR(100) NOT NULL, `Email` VARCHAR(100) NOT NULL, KUNCI UTAMA (`UserId`), KUNCI UNIK `Email` (`Email`), KUNCI ASING (DomainId) REFERENSI Domains_tbl (DomainId) PADA DELETE CASCADE ) ENGINE = InnoDB;
Anda akan mendapatkan pesan konfirmasi (jika tidak, phpMyAdmin akan meminta kesalahan sintaks):
CREATE TABLE `Alias_tbl` ( `AliasId` INT NOT NULL AUTO_INCREMENT, `DomainId` INT NOT NULL, `Source` varchar (100) NOT NULL, `Destination` varchar (100) NOT NULL, PRIMARY KEY (`AliasId`), FOREIGN KEY (DomainId) REFERENSI Domains_tbl (DomainId) ON DELETE RIAM. ) MESIN = InnoDB;
(Klik Pergi di bagian bawah untuk melanjutkan pembuatan tabel).
Sampai saat ini, Anda harus memiliki struktur database berikut:
Yang berarti Anda siap untuk mulai menambahkan beberapa catatan di bagian berikutnya.
14. Kami sekarang akan memasukkan catatan berikut ke dalam tiga tabel. Kata sandi untuk [dilindungi email] dan [dilindungi email] akan dienkripsi dan MASUKKAN KE Users_tbl penyataan.
Juga, harap perhatikan bahwa email yang dikirim ke [dilindungi email] akan diarahkan ke [dilindungi email]:
INSERT INTO Domains_tbl (DomainName) NILAI ('linuxnewz.com'); INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[dilindungi email]'); INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[dilindungi email]'); INSERT INTO Alias_tbl (DomainId, Sumber, Tujuan) NILAI (1, '[dilindungi email]', 'T[dilindungi email]');
Setelah menambahkan domain kami, dua akun pengguna, dan email alias, kami siap untuk melanjutkan pengaturan server email kami di artikel berikutnya dari seri ini, di mana kami akan mengkonfigurasi Tempat perlindungan merpati dan Postfix.
Dalam artikel ini kami telah membuat daftar paket yang diperlukan untuk menginstal server email Postfix di CentOS 7 VPS, dan menjelaskan cara mengelola database yang mendasarinya menggunakan phpMyAdmin.
Dalam dua artikel berikutnya kami akan meninjau konfigurasi dari dua program yang akan menangani distribusi email untuk domain kami (Bagian 2) dan menunjukkan 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.