Tutorial ini adalah Hak Cipta (c) 2014 oleh Falko Timme &Srijan Kishore. Ini berasal dari tutorial dari Christoph Haas yang dapat Anda temukan di http://workaround.org. Anda bebas menggunakan tutorial ini di bawah lisensi Creative Commons 2.5 atau versi yang lebih baru.
Dokumen ini menjelaskan cara menginstal server email Postfix yang didasarkan pada pengguna dan domain virtual, yaitu pengguna dan domain yang ada di database MySQL. Saya juga akan mendemonstrasikan instalasi dan konfigurasi Courier (Courier-POP3, Courier-IMAP), sehingga Courier dapat mengautentikasi terhadap database MySQL yang sama yang digunakan Postfix.
Server Postfix yang dihasilkan mampu SMTP-AUTH dan TLS dan kuota (kuota tidak ada di dalam Postfix secara default, saya akan menunjukkan cara menambal Postfix Anda dengan tepat). Sandi disimpan dalam terenkripsi formulir di database (sebagian besar dokumen yang saya temukan berurusan dengan kata sandi teks biasa yang merupakan risiko keamanan). Selain itu, tutorial ini mencakup pemasangan Amavisd , SpamAssassin dan ClamAV sehingga email akan dipindai dari spam dan virus. Saya juga akan menunjukkan cara memasang SquirrelMail sebagai antarmuka webmail sehingga pengguna dapat membaca dan mengirim email serta mengubah kata sandi mereka.
Keuntungan dari pengaturan "virtual" seperti itu (pengguna dan domain virtual dalam database MySQL) adalah kinerjanya jauh lebih baik daripada pengaturan yang didasarkan pada pengguna sistem "nyata". Dengan penyiapan virtual ini, server email Anda dapat menangani ribuan domain dan pengguna. Selain itu, lebih mudah untuk diadministrasikan karena Anda hanya perlu berurusan dengan database MySQL ketika Anda menambahkan pengguna/domain baru atau mengedit yang sudah ada. Tidak ada lagi perintah postmap untuk membuat file db, tidak ada lagi reload Postfix, dll. Untuk administrasi database MySQL Anda dapat menggunakan alat berbasis web seperti phpMyAdmin yang juga akan diinstal di howto ini. Keuntungan ketiga adalah pengguna memiliki alamat email sebagai nama pengguna (bukan nama pengguna + alamat email) yang lebih mudah dipahami dan diingat.
Howto ini dimaksudkan sebagai panduan praktis; itu tidak mencakup latar belakang teoretis. Mereka diperlakukan di banyak dokumen lain di web.
Dokumen ini datang tanpa jaminan apapun! Saya ingin mengatakan bahwa ini bukan satu-satunya cara untuk mengatur sistem seperti itu. Ada banyak cara untuk mencapai tujuan ini tetapi ini adalah cara yang saya ambil. Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!
1 Catatan Awal
Tutorial ini didasarkan pada Server Ubuntu 13.10 (Saucy Salamander), jadi Anda harus menyiapkan instalasi server dasar Ubuntu 13.10 sebelum melanjutkan dengan tutorial ini. Sistem harus memiliki alamat IP statis. Saya menggunakan 192.168.0.100 sebagai alamat IP saya dalam tutorial ini dan server1.example.com sebagai nama host.
Pastikan Anda login sebagai root (ketik
sudo su
untuk menjadi root), karena kita harus menjalankan semua langkah dari tutorial ini sebagai pengguna root.
Sangat penting bagi Anda untuk membuat /bin/sh sebagai symlink ke /bin/bash...
dpkg-konfigurasi ulang tanda hubung
Gunakan tanda hubung sebagai shell sistem default (/bin/sh)? <-- Tidak
... dan bahwa Anda menonaktifkan AppArmor:
/etc/init.d/apparmor stop
update-rc.d -f apparmor hapus
apt-get remove apparmor apparmor-utils
2 Instal Postfix, Courier, Saslauthd, MySQL, phpMyAdmin
Untuk menginstal Postfix, Courier, Saslauthd, MySQL, dan phpMyAdmin, kita cukup menjalankan
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server kurir-authdaemon kurir-authlib-mysql kurir-pop kurir-pop-ssl kurir-imap kurir-imap-ssl libsasl2-2 libsasl2-modul libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass
Anda akan ditanya beberapa pertanyaan:
Kata sandi baru untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Buat direktori untuk administrasi berbasis web? <-- Tidak
Jenis umum konfigurasi email:<-- Situs Internet
Nama email sistem:<-- server1.example.com
Diperlukan sertifikat SSL <-- Oke
Server web untuk mengkonfigurasi ulang secara otomatis:<-- apache2
Konfigurasi database untuk phpmyadmin dengan dbconfig-common? <-- Tidak
3 Terapkan Patch Kuota Ke Postfix
Kita harus mendapatkan sumber Postfix, menambalnya dengan tambalan kuota, membangun paket .deb Postfix baru dan menginstal paket .deb tersebut:
apt-get build-dep postfix
cd /usr/src
apt-get source postfix
(Pastikan Anda menggunakan versi Postfix yang benar pada perintah berikut. Saya telah menginstal Postfix 2.10.2. Anda dapat mengetahui versi Postfix Anda dengan menjalankan
postconf -d | grep mail_version
Outputnya akan terlihat seperti ini:
[email protected]:/usr/src# postconf -d | grep mail_version
mail_version =2.10.2
milter_macro_v =$mail_name $mail_version
[dilindungi email]:/usr/src#
wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.10.2
patch -p1 <../postfix- vda-v13-2.10.0.patch
Selanjutnya buka debian/rules dan ubah DEB_BUILD_HARDENING dari 1 menjadi 0:
vi debian/aturan
[...]ekspor DEB_BUILD_HARDENING=0[...] |
Jika Anda tidak melakukannya, build Anda akan gagal dengan pesan kesalahan berikut:
maildir.c:Dalam fungsi âdeliver_maildirâ:
maildir.c:974:17:error:format not string literal dan tidak ada argumen format [-Werror=format-security]
maildir.c:977:17:kesalahan:format bukan literal string dan tidak ada argumen format [-Werror=format-security]
maildir.c:983:17:kesalahan:format bukan literal string dan tidak ada argumen format [-Werror=format-security]
maildir.c:986:17:error:format not string literal dan tidak ada argumen format [-Werror=format-security]
maildir.c:Dalam fungsi âsql2fileâ:
maildir.c:404:25:warning:mengabaikan nilai balik 'read', dideklarasikan dengan atribut warn_unused_result [-Wunused-result]
maildir.c:417:26:warning:mengabaikan nilai kembalian 'write', dideklarasikan dengan atribut warning_unused_result [-Wunused-result]
cc1:beberapa peringatan diperlakukan sebagai kesalahan
make:*** [maildir.o] Kesalahan 1
make:Meninggalkan direktori `/usr/src/postfix -2.10.2/src/virtual'
make[1]:*** [update] Error 1
make[1]:Meninggalkan direktori `/usr/src/postfix-2.10.2'
make:*** [build] Error 2
dpkg-buildpackage:error:debian/rules build memberi error status keluar 2
[ email dilindungi]:/usr/src/postfix-2.10.2#
Sekarang kita dapat membangun paket .deb Postfix yang baru:
dpkg-buildpackage
Sekarang kita naik satu direktori, di situlah paket .deb baru telah dibuat:
cd ..
Perintah
ls -l
menunjukkan kepada Anda paket yang tersedia:
[email protected]:/usr/src# ls -l
total 7124
drwxr-xr-x 18 root root 4096 16 Apr 04:29 postfix-2.10.2
- rw-r--r-- 1 root root 48594 16 Apr 04:29 postfix-cdb_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 161974 16 Apr 04:29 postfix- dev_2.10.2-1_all.deb
-rw-r--r-- 1 root root 1094344 16 Apr 04:29 postfix-doc_2.10.2-1_all.deb
-rw-r--r- - 1 root root 57342 16 Apr 04:29 postfix-ldap_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50554 16 Apr 04:29 postfix-mysql_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50804 16 Apr 04:29 postfix-pcre_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50756 Apr 16 04:29 postfix-pgsql_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 55701 Jun 7 2013 postfix-vda-v13-2.10.0.patch
-rw- r--r-- 1 root root 282175 16 Apr 04:28 postfix_2.10.2-1.diff.gz
-rw-r--r-- 1 root root 1522 16 Apr 04:28 postfix_2.10.2- 1.dsc
-rw-r--r-- 1 root root 3899 16 Apr 04:29 postfix_2.10.2-1_amd64. perubahan
-rw-r--r-- 1 root root 1542368 16 Apr 04:29 postfix_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 3828326 12 Sep 2013 postfix_2.10.2.orig.tar.gz
Pilih paket postfix dan postfix-mysql dan instal seperti ini:
dpkg -i postfix_2.10.2-1_amd64.deb postfix-mysql_2.10.2-1_amd64.deb
4 Membuat Database MySQL Untuk Postfix/Courier
Sekarang kita membuat database bernama mail:
mysqladmin -u root -p buat email
Anda akan ditanyai pertanyaan ini:
Masukkan Kata Sandi:<--yourrootsqlpassword
Selanjutnya, kita pergi ke shell MySQL:
mysql -u root -p
Di shell MySQL, kami membuat pengguna mail_admin dengan passwort mail_admin_password (ganti dengan kata sandi Anda sendiri) yang memiliki hak istimewa SELECT,INSERT,UPDATE,DELETE pada database email. Pengguna ini akan digunakan oleh Postfix dan Courier untuk terhubung ke database email:
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' DIIDENTIFIKASI DENGAN 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@ 'localhost.localdomain' DIIDENTIFIKASI DENGAN 'mail_admin_password';
HAK ISTIMEWA;
Masih di shell MySQL, kami membuat tabel yang dibutuhkan oleh Postfix dan Courier:
GUNAKAN email;
BUAT TABEL domain (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
ENGINE=MyISAM;
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
ENGINE=MyISAM;
BUAT pengguna TABEL (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
kuota INT(10) DEFAULT '10485760',
PRIMARY KUNCI (email)
) ENGINE=MyISAM;
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) ENGINE=MyISAM;
berhenti;
Seperti yang mungkin Anda perhatikan, dengan berhenti; perintah kami telah meninggalkan shell MySQL dan kembali ke shell Linux.
domain tabel akan menyimpan setiap domain virtual tempat Postfix harus menerima email (mis. example.com ).
domain |
contoh.com |
Penerusan tabel adalah untuk aliasing satu alamat email ke yang lain, mis. teruskan email untuk [email protected] ke .
sumber | tujuan |
[email dilindungi] | [dilindungi email] |
pengguna tabel menyimpan semua pengguna virtual (yaitu alamat email, karena alamat email dan nama pengguna sama) dan kata sandi (dalam terenkripsi form!) dan nilai kuota untuk setiap kotak surat (dalam contoh ini nilai defaultnya adalah 10485760 byte yang berarti 10 MB).
sandi | kuota | |
[email dilindungi] | Tidak9.E4skNvGa. ("rahasia" dalam bentuk terenkripsi) | 10485760 |
transportasi tabel adalah opsional, ini untuk pengguna tingkat lanjut. Ini memungkinkan untuk meneruskan email untuk pengguna tunggal, seluruh domain atau semua email ke server lain. Misalnya,
domain | transportasi |
contoh.com | smtp:[1.2.3.4] |
akan meneruskan semua email untuk example.com melalui protokol smtp ke server dengan alamat IP 1.2.3.4 (tanda kurung siku [] berarti "jangan mencari data MX DNS" (yang masuk akal untuk alamat IP...). Jika Anda menggunakan nama domain yang sepenuhnya memenuhi syarat (FQDN), Anda tidak akan menggunakan tanda kurung siku.).
BTW, (Saya berasumsi bahwa alamat IP dari sistem server email Anda adalah 192.168.0.100) Anda dapat mengakses phpMyAdmin melalui http://192.168.0.100/phpmyadmin/ di browser dan masuk sebagai mail_admin. Kemudian Anda dapat melihat database. Nanti Anda dapat menggunakan phpMyAdmin untuk mengatur server email Anda.
5 Konfigurasi Postfix
Sekarang kita harus memberitahu Postfix di mana ia dapat menemukan semua informasi dalam database. Oleh karena itu kita harus membuat enam file teks. Anda akan melihat bahwa saya memberi tahu Postfix untuk terhubung ke MySQL pada alamat IP 127.0.0.1 alih-alih localhost. Ini karena Postfix berjalan di chroot jail dan tidak memiliki akses ke soket MySQL yang akan coba disambungkan jika saya memberi tahu Postfix untuk menggunakan localhost. Jika saya menggunakan 127.0.0.1 Postfix menggunakan jaringan TCP untuk terhubung ke MySQL yang tidak ada masalah bahkan di chroot jail (alternatifnya adalah memindahkan soket MySQL ke chroot jail yang menyebabkan beberapa masalah lain).
Harap pastikan bahwa /etc/mysql/my.cnf berisi baris berikut:
vi /etc/mysql/my.cnf
[...]# Alih-alih melewatkan jaringan, defaultnya sekarang hanya mendengarkan di# localhost yang lebih kompatibel dan tidak kalah aman.bind-address =127.0.0.1[...] |
Jika Anda harus mengubah /etc/mysql/my.cnf, silakan restart MySQL sekarang:
/etc/init.d/mysql restart
Jalankan
netstat -ketuk | grep mysql
untuk memastikan bahwa MySQL mendengarkan pada 127.0.0.1 (localhost.localdomain):
[email protected]:~# netstat -tap | grep mysql
tcp 0 0 localhost.localdo:mysql *:* DENGARKAN 24970/mysqld
[email protected]:~#
Sekarang mari kita buat enam file teks kita.
vi /etc/postfix/mysql-virtual_domains.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT domain AS virtual FROM domains WHERE domain='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_forwardings.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =PILIH tujuan FROM penerusan WHERE source='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_mailboxes.cf
pengguna =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@', 1),'/') FROM users WHERE email='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_email2email.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =PILIH email DARI pengguna WHERE email='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_transports.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT transport FROM transport WHERE domain='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =PILIH kuota FROM pengguna WHERE email='%s'hosts =127.0.0.1 |
Kemudian ubah izin dan grup file-file ini:
chmod o=/etc/postfix/mysql-virtual_*.cf
chgrp postfix /etc/postfix/mysql-virtual_*.cf
Sekarang kita membuat pengguna dan grup bernama vmail dengan direktori home /home/vmail. Di sinilah semua kotak surat akan disimpan.
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Selanjutnya kita melakukan beberapa konfigurasi Postfix. Pastikan Anda mengganti server1.example.com dengan FQDN yang valid, jika tidak, Postfix Anda mungkin tidak berfungsi dengan baik!
postconf -e 'myhostname =server1.example.com'
postconf -e 'mydestination =server1.example.com, localhost, localhost.localdomain'
postconf -e 'mynetworks =127.0.0.0 /8'
postconf -e 'virtual_alias_domains ='
postconf -e 'virtual_alias_maps =proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email. cf'
postconf -e 'virtual_mailbox_domains =proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e 'virtual_mailbox_maps =proxy:mysql:/etc/postfix/mysql-virtual_mailboxes. cf'
postconf -e 'virtual_mailbox_base =/home/vmail'
postconf -e 'virtual_uid_maps =static:5000'
postconf -e 'virtual_gid_maps =static:5000'
postconf -e 'smtpd_sasl_auth_enable =yes'
postconf -e 'broken_sasl_auth_clients =yes'
postconf -e 'smtpd_sasl_authenticated_header =yes'
postconf -e 'smtpd_recipient_tpd_recipient on'
postconf -e 'smtpd_use_tls =yes'
postconf -e 'smtpd_tls_cert_file =/etc/postfix/smtpd.cert'
postconf -e 'smtpd_tls_key_file =/etc/postfix/smtpd. key'
postconf -e 'transport_maps =proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
postconf -e 'virtual_maildir_extended =yes'
postconf -e 'virtual_mailbox_limit_maps =proxy :mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'
postconf -e 'virtual_mailbox_limit_override =yes'
postconf -e 'virtual_maildir_limit_message ="Pengguna yang Anda coba jangkau melebihi kuota."'
postconf -e 'virtual_overquota_bounce =yes'
postconf -e 'proxy_read_maps =$ local_recipient_maps $ mydestination $ virtual_alias_maps $ virtual_alias_domains $ virtual_mailbox_maps $ virtual_mailbox_domains $ relay_recipient_maps $ relay_domains $ canonical_maps $ sender_canonical_maps $ recipient_canonical_maps $ relocated_maps $ transport_maps $ mynetworks $virtual_mailbox_limit_maps'
Setelah itu kita buat sertifikat SSL yang dibutuhkan untuk TLS:
cd /etc/postfix
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
Nama Negara (kode 2 huruf) [AU]:<-- Masukkan Nama Negara Anda (mis., "DE").
Nama Negara Bagian atau Provinsi (nama lengkap) [Some-State]:<-- Masukkan Negara Bagian Anda atau Nama Provinsi.
Nama Lokalitas (mis., kota) []:<-- Masukkan Kota Anda.
Nama Organisasi (mis., perusahaan) [Internet Widgits Pty Ltd]:<-- Masukkan Nama Organisasi Anda (mis., nama perusahaan Anda).
Nama Unit Organisasi (mis., seksi) []:<-- Masukkan Nama Unit Organisasi Anda (mis. "Departemen TI").
Nama Umum (mis. nama ANDA) []:<-- Masukkan Nama Domain yang Memenuhi Syarat dari sistem (misalnya "server1.example.com").
Alamat Email []:<-- Masukkan Alamat Email Anda.
Kemudian ubah izin smtpd.key:
chmod o=/etc/postfix/smtpd.key
6 Konfigurasi Saslauthd
Jalankan pertama
mkdir -p /var/spool/postfix/var/run/saslauthd
Kemudian edit /etc/default/saslauthd.conf Setel MULAI ke ya dan ubah baris OPTIONS="-c -m /var/run/saslauthd" menjadi OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":
vi /etc/default/saslauthd
## Setting untuk saslauthd daemon# Silakan baca /usr/share/doc/sasl2-bin/README.Debian untuk detailnya.## Haruskah saslauthd dijalankan secara otomatis saat startup? (default:no)START=yes# Deskripsi instance saslauthd ini. Direkomendasikan.# (saran:SASL Authentication Daemon)DESC="SASL Authentication Daemon"# Nama pendek dari instance saslauthd ini. Sangat disarankan.# (saran:saslauthd)NAME="saslauthd"# Mekanisme otentikasi mana yang harus digunakan saslauthd? (default:pam)## Opsi yang tersedia dalam paket Debian ini:# getpwent -- gunakan fungsi library getpwent()# kerberos5 -- gunakan Kerberos 5# pam -- gunakan PAM# rimap -- gunakan server IMAP jarak jauh# shadow - - gunakan file sandi bayangan lokal# sasldb -- gunakan file database sasldb lokal# ldap -- gunakan LDAP (konfigurasi ada di /etc/saslauthd.conf)## Hanya satu opsi yang dapat digunakan pada satu waktu. Lihat halaman manual saslauthd# untuk informasi lebih lanjut.## Contoh:MECHANISMS="pam"MECHANISMS="pam"# Opsi tambahan untuk mekanisme ini. (default:none)# Lihat halaman manual saslauthd untuk informasi tentang opsi spesifik mech.MECH_OPTIONS=""# Berapa banyak proses saslauthd yang harus kita jalankan? (default:5)# Nilai 0 akan memotong proses baru untuk setiap koneksi.THREADS=5# Opsi lain (default:-c -m /var/run/saslauthd)# Catatan:Anda HARUS menentukan opsi -m atau saslauthd tidak akan berjalan!## PERINGATAN:JANGAN JELASKAN OPSI -d.# Opsi -d akan menyebabkan saslauthd berjalan di latar depan alih-alih sebagai# sebuah daemon. Ini akan MENCEGAH SISTEM ANDA DARI BOOTING DENGAN BENAR. Jika Anda ingin# menjalankan saslauthd dalam mode debug, silakan jalankan dengan tangan agar aman.## Lihat /usr/share/doc/sasl2-bin/README.Debian untuk informasi khusus Debian.# Lihat halaman manual saslauthd dan output dari 'saslauthd -h' untuk informasi# umum tentang opsi ini.## Contoh untuk pengguna chroot Postfix:"-c -m /var/spool/postfix/var/run/saslauthd"# Contoh untuk pengguna Postfix non-chroot :"-c -m /var/run/saslauthd"## Untuk mengetahui apakah Postfix Anda menjalankan chroot, periksa /etc/postfix/master.cf.# Jika ada baris "smtp inet n - y - - smtpd" atau "smtp inet n - - - - smtpd"# maka Postfix Anda berjalan di chroot.# Jika memiliki baris "smtp inet n - n - - smtpd" maka Postfix Anda TIDAK# berjalan di chroot.#OPTIONS ="-c -m /var/run/saslauthd"OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" |
Kemudian buat file /etc/pam.d/smtp. Seharusnya hanya berisi dua baris berikut (pastikan untuk mengisi detail database Anda yang benar):
vi /etc/pam.d/smtp
auth diperlukan pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1akun cukup pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 |
Selanjutnya buat file /etc/postfix/sasl/smtpd.conf. Seharusnya terlihat seperti ini:
vi /etc/postfix/sasl/smtpd.conf
pwcheck_method:saslauthdmech_list:plain loginallow_plaintext:trueauxprop_plugin:sqlsql_engine:mysqlsql_hostnames:127.0.0.1sql_user:mail_adminsql_passwd:mail_admin_passwordsql_database:mailsql_select:'% pilih kata sandi dari pengguna dilindungi]%r' |
Selanjutnya tambahkan pengguna postfix ke grup sasl (ini memastikan bahwa Postfix memiliki izin untuk mengakses saslauthd):
sasl adduser postfix
Kemudian restart Postfix dan Saslauthd:
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart
7 Konfigurasikan Kurir
Sekarang kita harus memberi tahu Courier bahwa itu harus mengautentikasi terhadap database MySQL kita. Pertama, edit /etc/courier/authdaemonrc dan ubah nilai authmodulelist sehingga berbunyi:
vi /etc/courier/authdaemonrc
[...]authmodulelist="authmysql"[...] |
Kemudian buat cadangan /etc/courier/authmysqlrc dan kosongkan file lama:
cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
cat /dev/null> /etc/courier/authmysqlrc
Kemudian buka /etc/courier/authmysqlrc dan masukkan baris berikut ke dalamnya:
vi /etc/courier/authmysqlrc
MYSQL_SERVER localhostMYSQL_USERNAME mail_adminMYSQL_PASSWORD mail_admin_passwordMYSQL_PORT 0MYSQL_DATABASE mailMYSQL_USER_TABLE usersMYSQL_CRYPT_PWFIELD sandi # MYSQL_CLEAR_PWFIELD passwordMYSQL_UID_FIELD 5000MYSQL_GID_FIELD 5000MYSQL_LOGIN_FIELD emailMYSQL_HOME_FIELD "/ home / vmail" MYSQL_MAILDIR_FIELD CONCAT (SUBSTRING_INDEX (email, '@', - 1), '/',SUBSTRING_INDEX(email,'@',1),'/')#MYSQL_NAME_FIELDkuotaMYSQL_QUOTA_FIELD |
Selama penginstalan, sertifikat SSL untuk IMAP-SSL dan POP3-SSL dibuat dengan hostname localhost. Untuk mengubah ini ke nama host yang benar (server1.example.com dalam tutorial ini), hapus sertifikat...
cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem
... dan ubah dua file berikut; ganti CN=localhost dengan CN=server1.example.com (Anda juga dapat mengubah nilai lainnya, jika perlu):
vi /etc/courier/imapd.cnf
[...]CN=server1.example.com[...] |
vi /etc/courier/pop3d.cnf
[...]CN=server1.example.com[...] |
Kemudian buat ulang sertifikatnya...
mkimapdcert
mkpop3dcert
... dan mulai ulang Kurir:
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
Dengan menjalankan
telnet localhost pop3
Anda dapat melihat apakah server POP3 Anda berfungsi dengan benar. Seharusnya mengembalikan +OK Halo. (Ketik quit untuk kembali ke shell Linux.)
[email protected]:/etc/courier# telnet localhost pop3
Mencoba ::1...
Terhubung ke localhost.localdomain.
Karakter Escape adalah '^]'.
+OK Halo.
<-- quit
+OK Semoga lain kali lebih beruntung.
Sambungan ditutup oleh host asing.
[email protected]:/etc/courier#
8 Ubah /etc/aliases
Sekarang kita harus membuka /etc/aliases. Pastikan postmaster menunjuk ke root dan root ke nama pengguna atau alamat email Anda sendiri, mis. seperti ini:
vi /etc/aliases
[...]postmaster:rootroot:[email protected][...] |
atau seperti ini (jika administrator adalah nama pengguna Anda sendiri):
[...]postmaster:rootroot:administrator[...] |
Setiap kali Anda memodifikasi /etc/aliases, Anda harus menjalankan
newalias
setelah itu dan mulai ulang Postfix:
/etc/init.d/postfix restart
9 Instal amavisd-new, SpamAssassin, Dan ClamAV
Untuk menginstal amavisd-new, spamassassin dan clamav, jalankan perintah berikut:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax
Setelah itu kita harus mengkonfigurasi amavisd-new. Konfigurasi dibagi dalam berbagai file yang berada di direktori /etc/amavis/conf.d. Lihatlah masing-masing untuk menjadi akrab dengan konfigurasi. Sebagian besar pengaturan baik-baik saja, namun kita harus memodifikasi tiga file:
Pertama kita harus mengaktifkan ClamAV dan SpamAssassin di /etc/amavis/conf.d/15-content_filter_mode dengan menghapus komentar pada baris @bypass_virus_checks_maps dan @bypass_spam_checks_maps:
vi /etc/amavis/conf.d/15-content_filter_mode
Filenya akan terlihat seperti ini:
gunakan ketat;# Anda dapat memodifikasi file ini untuk mengaktifkan kembali pemeriksaan SPAM melalui spamassassin# dan untuk mengaktifkan kembali pemeriksaan antivirus.## Mode pemeriksaan antivirus default# Harap diperhatikan , pemeriksaan anti-virus tersebut DISABLED secara default# Harap dicatat, bahwa pemeriksaan anti-spam DINONAKTIFKAN secara default.# Jika Anda ingin mengaktifkannya, harap batalkan komentar pada baris berikut:@bypass_spam_checks_maps =( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);1; # memastikan pengembalian yang ditentukan |
Dan kemudian Anda harus melihat pengaturan spam dan tindakan untuk spam-/virus-mails di /etc/amavis/conf.d/20-debian_defaults. Tidak perlu mengubah apa pun jika pengaturan default sudah sesuai untuk Anda. File berisi banyak penjelasan sehingga tidak perlu menjelaskan pengaturan di sini:
vi /etc/amavis/conf.d/20-debian_defaults
[...]$QUARANTINEDIR ="$MYHOME/virusmails";$quarantine_subdir_levels =1; # aktifkan dir karantina hashing$log_recip_templ =undef; # nonaktifkan entri log level-0 menurut penerima$DO_SYSLOG =1; # masuk melalui syslogd (lebih disukai)$syslog_ident ='amavis'; # tag identitas syslog, ditambahkan ke semua pesan$syslog_facility ='mail';$syslog_priority ='debug'; # beralih ke info untuk menghapus keluaran debug, dll$enable_db =1; # aktifkan penggunaan BerkeleyDB/libdb (SNMP dan pengasuh)$enable_global_cache =1; # aktifkan penggunaan cache berbasis libdb jika $enable_db=1$inet_socket_port =10024; # soket mendengarkan default$sa_spam_subject_tag ='***SPAM*** ';$sa_tag_level_deflt =2.0; # tambahkan header info spam jika pada, atau di atas level tersebut$sa_tag2_level_deflt =6,31; # tambahkan header 'spam terdeteksi' pada level tersebut$sa_kill_level_deflt =6,31; # memicu tindakan mengelak spam$sa_dsn_cutoff_level =10; # tingkat spam yang tidak mengirim DSN[...]$final_virus_destiny =D_DISCARD; # (data tidak hilang, lihat karantina virus)$final_banned_destiny =D_BOUNCE; # D_REJECT ketika front-end MTA$final_spam_destiny =D_BOUNCE;$final_bad_header_destiny =D_PASS; # Rawan positif palsu (untuk spam)[...] |
Terakhir, edit /etc/amavis/conf.d/50-user dan tambahkan baris $pax='pax'; di tengah:
vi /etc/amavis/conf.d/50-user
gunakan ketat;## Tempatkan arahan konfigurasi Anda di sini. Mereka akan menimpanya di# file sebelumnya.## Lihat /usr/share/doc/amavisd-new/ untuk dokumentasi dan contoh# arahan yang dapat Anda gunakan dalam file ini#$pax='pax';#---- -------- Jangan ubah apa pun di bawah baris ini -------------1; # memastikan pengembalian yang ditentukan |
Setelah itu, jalankan perintah ini untuk menambahkan pengguna clamav ke grup amavis dan untuk memulai ulang amavisd-new dan ClamAV:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-freshclam restart
/etc/init.d/clamav-daemon restartSekarang kita harus mengkonfigurasi Postfix untuk menyalurkan email masuk melalui amavisd-new:
postconf -e 'content_filter =amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options =no_address_mappings'Setelah itu tambahkan baris berikut ke /etc/postfix/master.cf:
vi /etc/postfix/master.cf
[...]amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes127.0.0.1:10025 inet n - - - - smtpd -o content_filter =-o local_recipient_maps =-o relay_recipient_maps =-o smtpd_restriction_classes =-o smtpd_client_restrictions =-o smtpd_helo_restrictions =-o smtpd_sender_restrictions =-o smtpd_recipient_restrictions =permit_mynetworks, menolak -o mynetworks =127.0.0.0 / 8 -o strict_rfc821_envelopes =yes -o accept_override_options=no_unknown_recipient_checks,no_header_body_checks |
Kemudian restart Postfix:
/etc/init.d/postfix restart
Sekarang jalankan
netstat -tap
dan Anda akan melihat Postfix (master) mendengarkan pada port 25 (smtp) dan 10025, dan amavisd-new pada port 10024:
[email protected]:/etc/courier# netstat -tap
Koneksi Internet aktif (server dan terbentuk)
Proto Recv-Q Send-Q Local Address Alamat Asing < Negara Bagian /> tcp 0 0*:http*:*Dengarkan 6134/Apache2
TCP 0 0*:SSH*:*Dengarkan 610/Sshd
TCP 0 0*:SMTP*:*Dengarkan 23128/Master
tcp 0 0 localhost.localdo:10024 *:* LISTEN 21937/amavisd-new (
tcp 0 0 localhost.localdo:10025 *:* LISTEN 23128/master
tcp 0 0 localhost.localdo :mysql *:* LISTEN 4308/mysqld
tcp 0 52 server1.example.com:ssh 192.168.0.206:57597 ESTABLISHED 976/0
tcp6 0 0 [::]:ssh [::]:* LISTEN 610/sshd
tcp6 0 0 [::]:smtp [::]:* LISTEN 23128/master
tcp6 0 0 [::]:imaps [::]:* LISTEN 18191/couriertcpd
tcp6 0 0 [::]:pop3s [::]:* LISTEN 18259/couriertcpd
tcp6 0 0 [::]:pop3 [::]:* LISTEN 18222/couriertcpd
tcp6 0 0 [::]:imap2 [::]:* LISTEN 18154/couriertcpd
[email protected]:/etc/courier#
10 Install Razor, Pyzor And DCC And Configure SpamAssassin
Razor, Pyzor and DCC are spamfilters that use a collaborative filtering network. To install Razor and Pyzor, run
apt-get install razor pyzor
DCC isn't available in the Ubuntu 13.10 repositories, so we install it as follows:
cd /tmp
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.1.154
./configure --with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd
Now we have to tell SpamAssassin to use these three programs. Edit /etc/spamassassin/local.cf and add the following lines to it:
vi /etc/spamassassin/local.cf
[...]#dccuse_dcc 1dcc_path /usr/local/bin/dccproc#pyzoruse_pyzor 1pyzor_path /usr/bin/pyzor#razoruse_razor2 1razor_config /etc/razor/razor-agent.conf#bayesuse_bayes 1use_bayes_rules 1bayes_auto_learn 1 |
Then we must enable the DCC plugin in SpamAssassin. Open /etc/spamassassin/v310.pre and uncomment the loadplugin Mail::SpamAssassin::Plugin::DCC line:
vi /etc/spamassassin/v310.pre
[...]# DCC - perform DCC message checks.## DCC is disabled here because it is not open source. See the DCC# license for more details.#loadplugin Mail::SpamAssassin::Plugin::DCC[...] |
You can check your SpamAssassin configuration by executing:
spamassassin --lint
It shouldn't show any errors.
Restart amavisd-new afterwards:
/etc/init.d/amavis restart
Now we update our SpamAssassin rulesets as follows:
sa-update --no-gpg
We create a cron job so that the rulesets will be updated regularly. Jalankan
crontab -e
to open the cron job editor. Create the following cron job:
23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null |
This will update the rulesets every second day at 4.23h.