Panduan Virtual Mailhosting System dengan Postfix
1.
Pendahuluan
Bagi kebanyakan pengguna gentoo, klien e-mail sederhana dan fetchmail
sudah cukup. Namun, jika anda menggunakan sistem anda sebagai penampung domain,
anda memerlukan MTA (Mail Transfer Agent) lengkap. dan jika anda memiliki
banyak domain, maka anda benar-benar memerlukan sesuatu yang lebih handal untuk
menangani semua e-mail untuk seluruh pengguna anda. Sistem ini dirancang untuk
menjadi solusi elegan untuk masalah tersebut.
Sebuah virtual mail system harus bisa menangani e-mail untuk banyak domain yang
memiliki banyak pengguna melalui berbagai antarmuka. Situasi ini akan
mendatangkan masalah yang harus kita selesaikan. Sebagai contoh, bagaimana jika
anda memiliki dua pengguna pada domain yang berbeda dan ingin menggunakan nama
user yang sama? Jika anda menyediakan akses imap dan smtp-auth, bagaimana cara
menggabungkan beberapa daemon otentikasi yang berbeda menjadi sebuah sistem?
Bagaimana cara menyediakan fasilitas keamanan yang dapat menjamin sistem
tersebut? Bagaimana cara mengurusnya?
Panduan ini akan menjelaskan kepada anda cara membuat sistem e-mail yang
sanggup menangani e-mail untuk sebanyak-banyaknya domain yang dapat ditangani
oleh hardware anda, dengan mendukung virtual mail user yang tidak memerlukan
akun shell, memiliki nama user khusus domain, dapat mengotentikasi klien web,
imap, smtp, dan pop3 dengan satu database tunggal, memanfaatkan lapisan
transport ssl, memiliki antarmuka web, dapat menangani milis untuk domain apa
saja yang tersedia di komputer, dan dikendalikan dengan database mysql yang
bagus, mudah, dan terpusat.
Terdapat beberapa cara untuk membuat virtual mailhosting system. Dengan
banyaknya pilihan yang tersedia, sebaiknya anda mengunjungi
http://www.qmail.org/ dan http://www.exim.org/ untuk
mengetahui solusi yang tepat bagi kebutuhan anda.
Paket-paket berikut ini akan kita gunakan: apache, courier-imap,
courier-authlib postfix, mod_php, phpmyadmin, squirrelmail, cyrus-sasl, mysql,
php, dan mailman.
Jangan lupa untuk mengaktifkan beberapa flag USE di /etc/make.conf
sebelum melakukan kompilasi: USE="mysql imap libwww maildir sasl ssl".
Jika tidak, kemungkinan besar anda harus melakukan kompilasi ulang utuk
mendapatkan dukungan yang anda perlukan untuk semua protokol. Selain itu, anda
juga sebaiknya menonaktifkan variabel mail dan jaringan lain, seperti ipv6.
Penting:
Anda memerlukan nama domain untuk menjalankan public mail server, atau paling
tidak sebuah MX record untuk satu domain. Idealnya, anda harus memiliki kendali
atas paling sedikit dua domain untuk mendapatkan keutamaan dari fungsionalitas
virtual domain baru anda.
|
Penting:
Pastikan agar /etc/conf.d/hostname telah berisi nama host yang
benar untuk server mail anda. Anda dapat menerapkan perubahan pada file ini
dengan menjalankan /etc/init.d/hostname restart. Periksa nama host anda
dengan menjalankan hostname. Periksa juga apakah masih anda konflik pada
entri di /etc/hosts.
|
Catatan:
Anda dianjurkan untuk membaca seluruh dokumen ini dan mengakrabkan diri anda
dengan semua langkah yang dijelaskan di sini sebelum melakukan instalasi. Jika
anda mendapatkan masalah pada langkah apapun, bacalah bagian pemecahan masalah
pada akhir panduan. Selain itu, anda mungkin tidak memerlukan semua paket yang
dicantumkan di sini. Panduan ini cukup fleksibel. Sebagai contoh, jika anda
tidak ingin menggunakan antarmuka web, anda tidak perlu membaca bagian
squirrelmail.
|
2.
Dasar-dasar Postfix
Daftar Kode 2.1: Instalasi postfix |
# emerge postfix
|
Peringatan:
Periksa kembali apakah anda tidak memiliki MTA lain seperti ssmtp, exim, atau
netqmail. Jika tidak, anda akan mendapatkan masalah BESAR.
|
Setelah postfix terinstal, saatnya untuk melakukan konfigurasi. Gantilah
beberapa opsi berikut di /etc/postfix/main.cf. Jangan lupa untuk
mengganti $variables dengan nama domain anda.
Daftar Kode 2.2: /etc/postfix/main.cf |
myhostname = $host.domain.name
mydomain = $domain.name
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain $mydomain
mynetworks = my.ip.net.work/24, 127.0.0.0/8
home_mailbox = .maildir/
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
|
Selanjutnya, ganti variabel di /etc/postfix/master.cf. Ini akan
mengaktifkan output verbose/terinci untuk melakukan debug:
Daftar Kode 2.3: /etc/postfix/master.cf |
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
#
==========================================================================
smtp inet n - n - - smtpd -v
|
Sekarang, edit /etc/mail/aliases untuk menambahkan alias lokal.
Paling tidak harus ada satu alias untuk root seperti:
root: your@email.address.
Daftar Kode 2.4: Menjalankan postfix untuk pertama kali |
# /usr/bin/newaliases
# /etc/init.d/postfix start
|
Setelah postfix dijalankan, luncurkan klien e-mail berbasis konsol kesukaan
anda dan kirimkan e-mail untuk diri anda sendiri. Penulis menggunakan
mutt. Periksa apakah postfix mengantarkan e-mail untuk pengguna lokal.
Jika berhasil, kita akan melanjutkan ke tahap berikutnya.
Catatan:
Penulis sangat menganjurkan anda untuk memeriksa kembali apakah semua
pengaturan dasar postfix telah berfungsi dengan sebelum melanjutkan ke
tahap berikutnya.
|
3.
Courier-imap
Daftar Kode 3.1: Instalasi courier-imap dan courier-authlib |
# emerge courier-imap courier-authlib
|
Daftar Kode 3.2: Konfigurasi ourier-imap |
# cd /etc/courier-imap
# nano -w pop3d.cnf
# nano -w imapd.cnf
# mkpop3dcert
# mkimapdcert
|
Daftar Kode 3.3: Menjalankan servis courier yang diperlukan |
# /etc/init.d/courier-imapd start
# /etc/init.d/courier-imapd-ssl start
# /etc/init.d/courier-pop3d start
# /etc/init.d/courier-pop3d-ssl start
|
Luncurkan klien e-mail anda dan periksa apakah semua koneksi yang telah anda
jalankan tadi sudah bekerja dengan benar untuk penerimaan dan pengiriman
e-mail. Tentu saja anda belum bisa login ke layanan apapun karena kita belum
mengatur otentikasi, tetapi ada baiknya jika kita memeriksa koneksi terlebih
dahulu.
Setelah pengaturan dasar benar, kita akan melakukan banyak langkah sekaligus
agar sistem dapat langsung bekerja. Lagi-lagi, pastikan terlebih dahulu bahwa
semua paket yang kita instal sudah dapat berfungsi dengan baik.
4.
Cyrus-sasl
Sekarang kita akan menginstal cyrus-sasl. Sasl akan berperan sebagai pengantar
variabel otentikasi ke courier-auth, yang akan menyampaikannya ke mysql untuk
otentikasi pengguna smtp. Di sini, kita tidak akan dapat memeriksa apakah sasl
telah berfungsi dengan benar sebelum kita mengatur mysql dan menambahkan user
percobaan. Anda tidak perlu khawatir, karena pada akahirnya kita akan melakukan
otentikasi dengan mysql.
Daftar Kode 4.1: Instalasi dan konfigurasi cyrus-sasl |
# emerge cyrus-sasl
|
Selajutnya, edit /etc/sasl2/smtpd.conf.
Daftar Kode 4.2: Menjalankan sasl |
# nano -w /etc/sasl2/smtpd.conf
mech_list: PLAIN LOGIN
pwcheck_method: saslauthd
# nano -w /etc/conf.d/saslauthd
SASLAUTHD_OPTS="${SASLAUTH_MECH} -a rimap -r"
SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -O localhost"
# /etc/init.d/saslauthd start
|
5.
Sertifikat SSL untuk Postfix dan Apache
Sekarang kita akan membuat sejumlah sertifikat untuk postfix dan apache.
Daftar Kode 5.1: Pembuatan sertifikat ssl |
# cd /etc/ssl/
# nano -w openssl.cnf
countryName_default
stateOrProvinceName_default
localityName_default
0.organizationName_default
commonName_default
emailAddress_default.
# cd misc
# ./CA.pl -newreq-nodes
# ./CA.pl -newca
# ./CA.pl -sign
# cp newcert.pem /etc/postfix
# cp newkey.pem /etc/postfix
# cp demoCA/cacert.pem /etc/postfix
# openssl req -new > new.cert.csr
# openssl rsa -in privkey.pem -out new.cert.key
# openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365
|
6.
Menambahkan dukungan SSL dan SASL untuk Postfix
Sekarang edit konfigurasi postfix agar postfix mengetahui kemampuan barunya
akan sasl dan ssl. Tambahkan beberapa parameter berikut di akhir file agar
lebih mudah ditemukan.
Daftar Kode 6.1: /etc/postfix/main.cf |
# nano -w /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl2_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain =
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_use_tls = yes
#smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/postfix/newkey.pem
smtpd_tls_cert_file = /etc/postfix/newcert.pem
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
# postfix reload
|
Sekarang kita akan memeriksa apakah konfigurasi kita telah diterapkan oleh
postfix. Untuk ini kita akan menggunakan telnet (yang disediakan oleh
net-misc/netkit-telnetd), namun anda juga bisa menggunakan nc
(yang disediakan oleh net-analyzer/netcat):
Daftar Kode 6.2: Memeriksa dukungan sasl dan tls |
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.domain.com ESMTP Postfix
EHLO domain.com
250-mail.domain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-XVERP
250 8BITMIME
^]
telnet> quit
|
Perhatikan apakah baris AUTH dan STARTTLS ditampilkan pada instalasi postfix
anda. Seperti yang telah penulis katakan sebelumnya, untuk saat ini AUTH belum
dapat digunakan karena sasl akan mencoba melakukan otentikasi dengan sasldb
yang belum kita atur, bukan dengan file shadow (karena alasan yang tidak
diketahui). Untuk itu, sekarang kita akan mengkonfigurasi mysql yang akan
menyimpan informasi otentikasi dan virtual domain kita.
7.
User vmail
Sebelum menyiapkan lingkungan mailhosting virtual, kita perlu membuat akun user
yang akan kita gunakan untuk menampung mailbox virtual. Untuk kemudahan, kita
akan menggunakan nama vmail untuk user ini.
Daftar Kode 7.1: Membuat akun user vmail |
# adduser -d /home/vmail -s /bin/false -m vmail
|
Sekarang akun user vmail sudah tersedia. Anda boleh membuat banyak akun jika
ingin (untuk memelihara struktur pada beberapa kumpulan akun vmail anda). ID
user, grup, dan direktori home direferensikan pada table MySQL.
Selanjutnya kita perlu membuat lokasi tempat kita menyimpan mailbox:
Daftar Kode 7.2: Menciptakan mailbox |
# mkdir -p /home/vmail/virt-domain.com/foo
# chown -R vmail:vmail /home/vmail/virt-domain.com
# maildirmake /home/vmail/virt-domain.com/foo/.maildir
|
8.
MySQL
Sekarang kita akan menginstal dan mengkonfigurasi MySQL. Anda memerlukan
file genericmailsql.sql
untuk menyelesaikan tahap ini.
Daftar Kode 8.1: Instalasi dan konfigurasi MySQL |
# emerge mysql
# /usr/bin/mysql_install_db
# /etc/init.d/mysql start
# mysqladmin -u root -p create mailsql
# mysql -u root -p mailsql < genericmailsql.sql
# mysql -u root -p mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE
-> ON mailsql.*
-> TO mailsql@localhost
-> IDENTIFIED BY '$password';
Query OK, 0 rows affected (0.02 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
# mysql -u mailsql -p mailsql
|
Database baru anda sudah memiliki nilai default dan tabel untuk dua domain.
Berikut ini adalah dua tabel yang dimilikinya:
- alias - alias e-mail lokal dan informasi alias mailman
- relocated - pemetaan alamat e-mail penguna yang telah direlokasikan
-
transport - informasi transport e-mail default untuk semua domain anda
- users - informasi semua akun pengguna
- virtual - pemetaan alias e-mail virtual domain
Daftar Kode 8.2: Contoh tabel alias |
id alias destination
1 root foo@bar.com
2 postmaster foo@bar.com
|
Daftar Kode 8.3: Contoh tabel user |
id email clear name uid gid homedir \
maildir quota postfix
10 foo@virt-domain.com $password realname virtid virtid /home/vmail \
/home/vmail/virt-domain.com/foo/.maildir/ y
13 foo@bar.com $password realname localid localid /home/foo \
/home/foo/.maildir/ y
|
Nilai uid dan gid virtid harus berasal dari user dan grup vmail.
Daftar Kode 8.4: Contoh tabel transport |
id domain destination
1 bar.com local:
2 virt-domain.com virtual:
|
Daftar Kode 8.5: Contoh tabel virtual |
id email destination
3 root@virt-domain.com other@email.address
|
9.
Apache dan phpMyAdmin
Sekarang kita akan mengatur apache dan menambahkan sebuah antarmuka untuk
mempermudah interaksi dengan database.
Daftar Kode 9.1: Instalasi apache dan phpmyadmin |
# emerge apache phpmyadmin
|
Ada banyak panduan yang tersedia tentang cara menambahkan dukungan php untuk
apache, seperti link="/proj/en/php/">Proyek PHP Gentoo. Selain itu,
beberapa topik di http://forums.gentoo.org membahas cara mengatasi
masalah pada proses instalasi. Untuk itu, kita tidak akan membahasnya di sini.
Konfigurasikan apache dan php, lalu lanjutkan sisa panduan ini. Satu petunjuk:
gunakan .htaccess pada direktori tempat anda menginstal
phpmyadmin. Jika anda tidak meletakkannya di sana, halaman index anda akan
dapat dijamah oleh laba-laba mesin pencarian internet sehingga semua orang
dapat membuka halaman phpmyadmin anda dengan google dan dapat membuat
perubahan pada database anda, yang merupakan situasi BURUK! Ada beberapa
panduan tentang hal ini, salah satunya adalah:
http://www.csoft.net/docs/micro/htaccess.html.en.
Sekarang kita akan menginstal sertifikat Apache yang telah kita buat
sebelumnya. Direktif Apache-SSL yang harus anda gunakan adalah:
- SSLCertificateFile /path/to/certs/new.cert.cert
- SSLCertificateKeyFile /path/to/certs/new.cert.key
Daftar Kode 9.2: Instalasi sertifikat SSL Apache |
# cp /etc/ssl/misc/new.cert.cert /etc/apache2/ssl/
# cp /etc/ssl/misc/new.cert.key /etc/apache2/ssl/
# cd /etc/apache2/vhosts.d
# cp 00_default_vhost.conf ssl-vhost.conf
# nano -w ssl-vhost.conf
NameVirtualHost host.domain.name:443
<VirtualHost host.domain.name:443>
ServerName host.domain.name
ServerAdmin your@email.address
DocumentRoot "/var/www/localhost/htdocs/phpmyadmin";
<Directory "/var/www/localhost/htdocs/phpmyadmin">
...
</Directory>
SSLCertificateFile /etc/apache2/ssl/new.cert.cert
SSLCertificateKeyFile /etc/apache2/ssl/new.cert.key
SSLEngine on
...
</VirtualHost>
# nano -w /etc/conf.d/apache2
# /etc/init.d/apache2 restart
|
Selanjutnya, konfigurasikan phpMyAdmin.
Daftar Kode 9.3: Konfigurasi phpMyAdmin |
# cd /var/www/localhost/htdocs/phpmyadmin
# cp config.sample.inc.php config.inc.php
# nano -w config.inc.php
$cfg['blowfish_secret'] = 'someverysecretpassphraze';
$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname
$cfg['Servers'][$i]['controluser'] = 'mailsql'; // MySQL control user settings
// (this user must have read-only
$cfg['Servers'][$i]['controlpass'] = '$password'; // access to the "mysql/user"
// and "mysql/db" tables)
$cfg['Servers'][$i]['user'] = 'mailsql'; // MySQL user
$cfg['Servers'][$i]['password'] = '$password'; // MySQL password
|
Sekarang masuklah ke halaman phpmyadmin dan jelajahi tabel yang tersedia. Anda
perlu menambahkan alias-alias lokal anda, mengedit tabel user dan menambahkan
user percobaan, serta merubah tabel transport untuk menambahkan informasi
tentang domain anda. Bilai-nilai default yang disediakan oleh dumpfile sudah
cukup untuk memberi petunjuk tentang nilai-nilai yang harus anda isikan di
sini. Pastikan juga agar informasi yang anda tambahkan di dalam database sudah
akurat. Sebagai contoh, pastikan agar direktori home user lokal sudah tersedia
dan nilai uid dan gid sudah benar. Maildir seharusnya akan langsung diciptakan
oleh postfix ketika seorang pengguna mendapatkan e-mail pertamanya. Jadi,
secara umum, anda sebaiknya mengirimkan e-mail "Selamat Datang" kepada pengguna
baru setelah anda mengatur akunnya untuk memastikan agar .maildir
diciptakan.
10.
Konfigurasi otentikasi MySQL dan vhost
Sekarang kita akan mengkonfigurasi-ulang otentikasi untuk menggunakan database
mailsql di courier-imap dan postfix. Pada semua contoh berikut, gantikan
$password dengan password yang anda tetapkan untuk user mailsql.
Daftar Kode 10.1: Pengaturan otentikasi |
# nano -w /etc/courier/authlib/authdaemonrc
authmodulelist="authmysql authpam"
# nano -w /etc/courier/authlib/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME mailsql
MYSQL_PASSWORD $password
MYSQL_DATABASE mailsql
MYSQL_USER_TABLE users
#MYSQL_CRYPT_PWFIELD crypt
MYSQL_CLEAR_PWFIELD clear
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD homedir
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
# /etc/init.d/courier-authlib restart
# /etc/init.d/saslauthd restart
|
Kita hampir selesai, sumpeh! Sekarang, atur beberapa sisa konfigurasi untuk
postfix agar dapat berinteraksi dengan database untuk semua kebutuhan
transportnya. Jangan lupa untuk menyesuaikan setiap nilai dengan nama user, id,
password, alias alamat email, dll.
Daftar Kode 10.2: /etc/postfix/mysql-aliases.cf |
# nano -w /etc/postfix/mysql-aliases.cf
# mysql-aliases.cf
user = mailsql
password = $password
dbname = mailsql
table = alias
select_field = destination
where_field = alias
hosts = unix:/var/run/mysqld/mysqld.sock
|
Daftar Kode 10.3: /etc/postfix/mysql-relocated.cf |
# nano -w /etc/postfix/mysql-relocated.cf
# mysql-relocated.cf
user = mailsql
password = $password
dbname = mailsql
table = relocated
select_field = destination
where_field = email
hosts = unix:/var/run/mysqld/mysqld.sock
|
Daftar Kode 10.4: /etc/postfix/mysql-transport.cf (opsional) |
# nano -w /etc/postfix/mysql-transport.cf
# mysql-transport.cf
user = mailsql
password = $password
dbname = mailsql
table = transport
select_field = destination
where_field = domain
hosts = unix:/var/run/mysqld/mysqld.sock
|
Daftar Kode 10.5: /etc/postfix/mysql-virtual-gid.cf (opsional) |
# nano -w /etc/postfix/mysql-virtual-gid.cf
#myql-virtual-gid.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = gid
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
|
Daftar Kode 10.6: /etc/postfix/mysql-virtual-maps.cf |
# nano -w /etc/postfix/mysql-virtual-maps.cf
# myql-virtual-maps.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = maildir
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
|
Daftar Kode 10.7: /etc/postfix/mysql-virtual-uid.cf (opsional) |
# nano -w /etc/postfix/mysql-virtual-uid.cf
# mysql-virtual-uid.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = uid
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
|
Daftar Kode 10.8: /etc/postfix/mysql-virtual.cf |
# nano -w /etc/postfix/mysql-virtual.cf
# mysql-virtual.cf
user = mailsql
password = $password
dbname = mailsql
table = virtual
select_field = destination
where_field = email
hosts = unix:/var/run/mysqld/mysqld.sock
|
Terakhir, edit /etc/postfix/main.cf sekali lagi.
Daftar Kode 10.9: /etc/postfix/main.cf |
# nano -w /etc/postfix/main.cf
alias_maps = mysql:/etc/postfix/mysql-aliases.cf
relocated_maps = mysql:/etc/postfix/mysql-relocated.cf
local_transport = local
local_recipient_maps = $alias_maps $virtual_mailbox_maps unix:passwd.byname
virtual_transport = virtual
virtual_mailbox_domains = virt-domain.com, $other-virtual-domain.com
virtual_minimum_uid = 1000
virtual_gid_maps = static:$vmail-gid
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf
virtual_uid_maps = static:$vmail-uid
virtual_mailbox_base = /
#virtual_mailbox_limit =
|
Demi keamanan, anda harus merubah perizinan beberapa
/etc/mail/mysql-*.cf:
Daftar Kode 10.10: Merubah perizinan file |
# chmod 640 /etc/postfix/mysql-*.cf
# chgrp postfix /etc/postfix/mysql-*.cf
|
Sejak Postfix 2.0.x, ada beberapa perubahan besar dari rilis 1.1.x seperti
tidak diperlukannya lagi tabel transport, virtual-gid, dan virtual-uid.
Tabel-tabel ini masih disediakan jika anda ingin menggunakannya.
Catatan:
Anda sebaiknya membaca file VIRTUAL_README yang disediakan pada dokumentasi
postfix untuk mendapatkan informasi tambahan.
|
Daftar Kode 10.11: Memuat ulang tabel postfix |
# postfix reload
|
Jika semuanya berjalan dengan lancar, seharusnya mailhost anda sudah berfungsi.
Pengguna anda seharusnya sudah bisa melakukan otentikasi pada database mysql
dengan menggunakan alamat e-mail-nya, untuk pop3, imap, dan smtp. Penulis
sangat menyarankan anda untuk memeriksa kembali apakah semua sudah berfungsi
dengan benar. Jika anda mendapatkan masalah (pada berbagai langkah), bacalah
bagian pemecahan masalah.
11.
Squirrelmail
Daftar Kode 11.1: Instalasi squirrelmail |
# emerge squirrelmail
# webapp-config -I -h localhost -d /mail squirrelmail 1.4.3a-r2
# cd /var/www/localhost/htdocs/mail/config
# perl ./conf.pl
|
12.
Mailman
Langkah terakhir: mailman. Mailman versi terbaru memiliki dukungan virtual
domain yang bagus. Inilah alasan mengapa penulis menggunakannya, selain karena
paket ini sangat bagus. Untuk menginstal dan mengkonfigurasinya dengan virtual
domain, anda harus melakukan sedikit hacking. Penulis sangat menyarankan
anda untuk membaca seluruh dokumentasi mailman, termasuk
README.POSTFIX.gz, agar anda mengerti apa yang akan kita lakukan
di sini.
Daftar Kode 12.1: Instalasi mailman |
# emerge mailman
|
Daftar Kode 12.2: Pengaturan default: Mailman/Defaults.py |
# nano -w /usr/mailman/Mailman/Defaults.py
DEFAULT_EMAIL_HOST = 'domain.com'
DEFAULT_URL_HOST = 'www.domain.com'
|
Daftar Kode 12.3: Konfigurasi mailman: mm_cfg.py |
# nano -w /var/mailman/Mailman/mm_cfg.py
MTA = "Postfix"
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['virt-domain.com', 'virt.domain2.com']
add_virtualhost('www.virt.domain.com', 'virt.domain.com')
add_virtualhost('www.virt.domain2.com', 'virt.domain2.com')
|
Daftar Kode 12.4: Terakhir |
# su mailman
# cd ~
# ./bin/newlist --urlhost='www.virt-domain.com' --emailhost='virt-domain.com' test
Enter the email of the person running the list: your@email.address
Initial test password:
Hit enter to continue with test owner notification...
# ./bin/genaliases
# nano -w data/aliases
# STANZA START: test
# CREATED:
test: "|/usr/local/mailman/mail/mailman post test"
test-admin: "|/usr/local/mailman/mail/mailman admin test"
test-bounces: "|/usr/local/mailman/mail/mailman bounces test"
test-confirm: "|/usr/local/mailman/mail/mailman confirm test"
test-join: "|/usr/local/mailman/mail/mailman join test"
test-leave: "|/usr/local/mailman/mail/mailman leave test"
test-owner: "|/usr/local/mailman/mail/mailman owner test"
test-request: "|/usr/local/mailman/mail/mailman request test"
test-subscribe: "|/usr/local/mailman/mail/mailman subscribe test"
test-unsubscribe: "|/usr/local/mailman/mail/mailman unsubscribe test"
# STANZA END: test
./bin/newlist mailman
# ./bin/genaliases
# exit
# /etc/init.d/mailman start
# rc-update add mailman default
|
Daftar Kode 12.5: Menambahkan dukungan alias mailman di postfix |
# nano -w /etc/postfix/main.cf
owner_request_special = no
recipient_delimiter = +
alias_maps =
hash:/usr/mailman/data/aliases,
mysql:/etc/postfix/mysql-aliases.cf
virtual_alias_maps =
hash:/usr/mailman/data/virtual-mailman,
mysql:/etc/postfix/mysql-virtual.cf
|
Sekarang seharusnya anda sudah bisa membuat milis baru untuk setiap domain
anda. Sebagai catatan akhir, pastikan anda menjalankan semua perintah mailman
sebagai user mailman (su mailman), karena jika tidak, perizinan anda
akan menjadi tidak beraturan dan anda harus memperbaikinya. Bacalah dokumentasi
mailman untuk mendapatkan informasi tentang cara mengatur milis mailman.
13.
Penyaringan isi dan Anti-Virus
Untuk penyaringan isi dan Anti-Virus, bacalah Panduan Gateway Penyaring E-mail.
14.
Penyelesaian Akhir
Ok, anda sudah selesai. Sekarang edit /etc/postfix/master.cf untuk
menonaktifkan modus verbose. Anda mungkin juga ingin menambahkan servis-servis
yang telah kita konfigurasikan tadi ke runlevel default agar dijalankan ketika
boot. Jangan lupa untuk menambahkan semua servis yang anda gunakan - apache,
mysql, saslauthd, postfix, courier-imapd, courier-imapd-ssl, courier-pop3d, dan
courier-pop3d-ssl, semuanya tergantung pada akses yang anda sediakan. Secara
umum, penulis mengaktifkan semua servis di atas.
Daftar Kode 14.1: Penyelesaian akhir |
# postfix reload
# rc-update add $service default
|
Selamat!
15.
Pemecahan Masalah
Pendahuluan
Pemecahan Masalah: Berikut ini adalah panduan singkat tentang cara pemecahan
masalah yang mungkin timbul ketika kita melakukan instalasi yang dijelaskan di
sini. Panduan ini tidak terlalu rinci, tetapi dirancang untuk menjadi tempat
pertama ketika anda mencari cara pemecahan dari masalah yang anda hadapi.
Dengan menjalankan instalasi dan konfigurasi yang rumit seperti di atas,
kemungkinan besar anda akan mendapatkan masalah pada beberapa komponen. Secara
umum, penulis melakukannya dengan beberapa tahapan. Memulai dari dasar sistem
sampai ke cabang-cabangnya, dengan memeriksa setiap komponen komponen yang
bermasalah ditemukan.
Tahap 1: Pemeriksaan file konfigurasi
Kesalahan ketik sangatlah buruk, terutama ketika kita sedang mengatur sistem
berotentikasi. Periksalah setiap file konfigurasi dan database mysql anda. Anda
dapat melakukan debug jika ingin, tetapi jika anda tidak memberikan informasi
yang tepat kepada sistem e-mail anda, proses debug tidak akan berhasil. Jika
anda membuat perubahan pada sebuah file konfigurasi dari satu servis, jangan
lupa untuk me-restart servis tersebut agar perubahan anda diterapkan.
Daftar Kode 15.1: Cara me-restart servis |
# /etc/init.d/service restart
|
Tahap 2: Apakah semua servis sudah benar-benar dijalankan?
Jika ternyata belum dijalankan, maka jalankanlah. Proses debug pada sebuah
servis akan sangat sulit dilakukan jika ternyata servis tersebut belum
dijalankan. Terkadang, sebuah servis kelihatannya sedang berjalan tetapi tidak
berfungsi. Pada situasi lainnya, ketika ada file konfigurasi rusak yang
digunakan, atau ada transmisi jelek yang datang ke sebuah komponen e-mail,
servis tersebut akan terkatung-katung dan tidak mengizinkan suatu port untuk
digunakan oleh proses lain. Biasanya anda dapat mendeteksi masalah ini dengan
netstat. Atau, jika anda sudah terlalu lama berkutat dengan panduan ini,
istirahatlah sebentar sambil me-reboot komputer anda. Cara ini akan
menghentikan semua servis yang terkatung-katung tadi. Setelah itu anda boleh
kembali melanjutkan.
Daftar Kode 15.2: Pemeriksaan status servis |
# /etc/init.d/$service status
# netstat -a | grep $service (or $port)
|
Tahap 3: Apakah semua servis sudah menggunakan konfigurasi baru?
Jika anda baru saja membuat perubahan pada sebuah file konfigurasi, anda harus
me-restart servis yang bersangkutan agar perubahan tersebut diterapkan.
Beberapa komponen akan menampilkan konfigurasinya saat ini kepada anda, seperti
postfix.
Daftar Kode 15.3: Servis-servis yang dapat menampilkan konfigurasinya |
# apache2ctl fullstatus (memerlukan lynx)
# apache2ctl configtest (memeriksa konfigurasi)
# postconf -n (akan memberitahukan anda semua konfigurasi yang digunakan oleh postfix)
# /etc/init.d/$service restart
|
Tahap 4: Memeriksa log
Ikuti penulis: "Log adalah sahabatku!" Tahap selanjutnya adalah
pemeriksaan log. Terkadang anda akan sangat terbantu dengan cara mengulangi
proses yang gagal dan kemudian memeriksa log-nya agar semua pesan error
dicantumkan pada akhir log (atau di awalnya, tergantung logger anda). Periksa
apakah ada informasi di log anda yang dapat membantu pencarian masalah, atau
paling tidak, carilah komponen yang bermasalah.
Daftar Kode 15.4: Pemeriksaan log |
# kill -USR1 `ps -C metalog -o pid=`(to turn off metalog buffering)
# nano -w /var/log/mail/current
# cat /var/log/mysql/mysql.log
# tail /var/log/apache2/error_log
|
Anda juga mungkin dapat memanfaatkan parameter debug_peer di
main.cf. Dengan menggunakannya, anda bisa mendapatkan ouput log
yang lebih terinci daripada output dari modus verbose.
Daftar Kode 15.5: Menambahkan dukungan debug_peer |
# nano -w /etc/postfix/main.cf
debug_peer_level = 5
debug_peer_list = $host.domain.name
|
Tahap 5: Berbicaralah dengan servis
SMTP, IMAP, dan POP3, semuanya merespon sesi telnet, seperti yang telah kita
lihat sebelumnya ketika ketika memeriksa konfigurasi postfix. Membuka sesi
telnet untuk suatu servis terkadang akan sangat membantu kita untuk melihat apa
saja yang sebenarnya sedang terjadi.
Daftar Kode 15.6: Membuka sesi telnet untuk suatu servis |
# telnet localhost $port
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc.
|
Tahap 6: Terkadang hanya senjata besar yang bisa memberikan informasi yang
anda perlukan: strace
Seharusnya anda sudah menginstalnya. Utilitas ini adalah utilitas tak ternilai
untuk men-debug software. Anda dapat menjalankan sebuah perintah dari baris
perintah dengan strace dan memperhatikan semua pemanggilan sistem yang
dijalankan. Terkadang strace memberikan banyak sekali informasi, jadi anda
harus memperhatikannya secara langsung ketika anda mencoba menjalankan kembali
transaksi yang gagal dari sistem e-mail, atau menumpahkan semua informasi
tersebut ke sebuah file untuk dibaca nanti.
Daftar Kode 15.7: Menggunakan strace |
# emerge strace
# strace $command
# strace -p `ps -C $service -o pid=`
|
Tahap 7: Riset
Setelah anda mendapatkan informasi yang anda perlukan, jika anda sudah dapat
mengatasi masalah anda, selamat! Jika belum, anda mungkin harus menggali
informasi yang dapat membantu anda dari internet. Berikut ini adalah beberapa
website yang mungkin perlu anda kunjungi untuk mengetahui apakah masalah anda
sudah diketahui dan pemecahannya sudah tersedia. Terdapat juga beberapa panduan
yang bagus tentang cara mengkonfigurasi smtp-auth yang juga berisi cara-cara
melakukan debug.
|