Panduan Administration vpopmail


oleh Ken Jones

penerjemah Diana Dewi




Panduan Installasi :


Cara Installasi vpopmail : (harus sebagai root)


# tar -zxvf vpopmail-3.4.11.tar.gz

# groupadd vchkpw

# useradd -g vchkpw vpopmail

# ./configure

# make

# make install-strip


Jika semua perintah yang di atas sudah dilakukan anda bisa melakukan penambahan virtual domain dan user (lihat vadddomain dan vadduser). Anda juga perlu mengubah pada baris start-up pop server anda dengan vchkpw untuk autentikasi.


Set semua e-mail menjadi virtual domains.


Dianjurkan semua domains di setup sebagai virtualdomain.


Option Configurasi :


--enable-roaming-users=n|y

Aktif atau tidak aktifnya open relay setelah pop autentikasi. Defaultnya adalah

"N" (tidak). Jika pilih "Y" (aktif) berarti bahwa IP address client ditambahkan ke dalam daftar IP yang diijinkan untuk relay ke smtp server setelah melakukan pop autentikasi. Sebuah crontab program, yaitu clearopensmtp menghapus IP autentikasi yang sudah lebih dari 3 jam dari daftar IP tersebut. Option ini juga memerlukan smtp server dengan tcpserver dengan -x/etc/tcp.smtp.cdb option atau dimana anda letakkan file tcp.smtp.cdb.


--enable-hardquota=#|n

Aktif dan set hard quota limit untuk setiap pop account. Defaultnya adalah 50 MB atau "N" tidak untuk no quota. Setiap ada e-mail yang masuk akan kembali ke si pengirim dengan sebuah pesan jika sudah melebihi dari quota limit yang diberikan Pesan ini bisa dimodifikasi. Jika anda ingin tidak menggunakan quota limit set option NOQUOTA, contoh :

--enable-hardquota=NOQUOTA.


--enable-default-domain=name default domain name

Default adalah kosong. Dianjurkan semua email dijalankan sebagai virtual domain. Salah satu domain bisa dijadikan sebagai default domain. Hanya jika mempunyai satu domain yang diset dengan option ini, user default domain dapat menggunakan user untuk autentikasi, tidak perlu menggunakan <user>%<virtualdomain>.


--enable-ip-alias-domains=y|n

Defaultnya setiap domain menggunakan basis virtual domain. Ini berarti untuk pop autentikasi, user harus menggunakan pula domain name. Contoh : <user>%<virtualdomain>. Ini dapat dikesampingkan jika hanya menggunakan satu domain (option --enable-default-domain).

Vpopmail juga bisa menggunakan IP based virtual domain. Jika option ini diaktifkan, user tidak perlu menambahkan %<virtualdomain>, kemudian sebuah reverse IP akan mencari ke server IP address dimana client tersebut terkoneksi. Jika server IP address merupakan resolve sebuah nama domain, dan vpopmail akan menggunakan nama tersebut sebagai domain. Contoh :

Test.com merupakan resolve dari IP w.x.y.z. Setting user untuk pop servernya ialah ke ip w.x.y.z dan terkoneksi. Vpopmail menerima koneksi tersebut, kemudian men-check IP dari sisi SERVER yang terkoneksi. Dan melihat apakah sebuah reverse IP tersebut menghasilkan test.com. User mengirimkan 'joe' sebagai pop user name. Vpopmail menggunakan test.com sebagai domainnya.

Dapat digabungkan antara pencocokan nama domain dan basis ip virtual domain.


--enable-relay-clear-minutes=360

Batas waktu untuk roaming user setelah melakukan pop autentikasi. Jika option --enable-roaming-users=y, maka option ini untuk men-set berapa lama clearopensmtp harus menyimpan IP tersebut dalam daftar. Defaultnya 3 jam.


Mysql option


--enable-mysql=n|y

Menggunakan mysql untuk autentikasi. Defaultnya adalah "no".

CATATAN: pastikan untuk edit vmysql.h dan set nama mysql server atau ip address server tersebut, mysql user dan mysql user password. User ini harus mempunyai hak untuk membuat sebuah database vpopmail dan membuat tabel dalam database tersebut.


--enable-sqlincdir=/usr/local/mysql

Set letak direktori file mysql include. Default adalah di /usr/local/mysql.


--enable-sqllibdir=/usr/lib/mysql

Set direktori letak file mysql libmysqlclient.a. Default adalah /usr/lib/mysql.


--enable-sqllibs=sql link ke mysqlclient library

Set link library. Default adalah libmysqlclient.a.


--enable-large-site=n|y

Default dari vpopmail meletakkan semua informasi domain dalam satu tabel vpopmail. Metode ini sangat effisien untuk site yang besar. Jika menjalankan satu site dengan jumlah user yang sangat besar, option ini diperlukan. Jika diset "yes", vpopmail akan membuat sebuah tabel untuk setiap virtual domain. Bagaimanapun juga untuk user yang besar (lebih dari 500.000 user) atau banyak virtual domain dapat mengurangi hasil sistem mysql.



Vpasswd/cdb options


--enable-ucspi-dir=dir

Set ke lokasi paket ucspi-tcp. Defaultnya adalah ../ucspi-tcp-0.84.

Vpopmail menggunakan 2 header di directory ini dan 2 buah file .a.



Logging options


--enable-logging=e|y|n

Set untuk mencatat proses atau aktivitas mail server tersebut, "y" untuk aktifkan pencatatan proses, "n" untuk tidak melakukan pencatatan, dan "e" untuk mencatat proses yang error saja. Defaultnya adalah mencatat proses yang error saja.


--enable-log-name=vpopmail

Nama file pencatat proses mail server. Defaultnya adalah vpopmail.



User / group option


--enable-vpopuser=vpopmail

Nama user untuk installasi vchkpw. Jika karena suatu alasan ingin menginstall vchkpw dengan nama user yang beda, gunakan option ini. Hanya dengan mengganti "vpopmail" dengan nama lain yang dikehendaki.


--enable-vpopgroup=vchkpw

Nama group untuk installasi vchkpw. Jika karena suatu alasan ingin menginstall vchkpw dengan nama group yang beda, gunakan ooption ini. Hanya dengan mengganti "vchkpw" dengan nama lain yang di kehendaki.


--enable-admin-email=email-address

Alamat email system administrator.



Directory and file location options


--enable-tcpserver-file=/etc/tcp.smtp

Set nama file tcp.smtp. Default program configure akan mencari di direktori /etc dan direktori /etc/tcprules.d.


--enable-qmaildir=dir

Jika anda menginstall qmail tidak di direktori /var/qmail, gunakan option ini dan set ke direktori dimana qmail diinstall.


--enable-tcprules-prog=/usr/local/bin/tcprules

Jika anda program tcprules tidak terinstall di direktori /usr/local/bin, gunakan option ini dengan seting direktori dimana anda menginstall program tersebut.


--enable-apop-file=/etc/apop-secrets

Untuk lokasi defaultnya adalah di /etc.


Other option


--enable-apop=y|n

Defaultnya adalah "y" itu artinya bisa menggunakan pop autentikasi atau apop autentikasi. Jika pilih "n" artinya hanya menggunakan pop autentikasi.


--enable-passswd=y|n

Default adalah "y" dan dari program configure akan secara otomatis mendeteksi jika anda menggunakan /etc/passwd atau /etc/shadow password. Jika pilih "n" artinya tidak menggunakan autentikasi password dari /etc/passwd atau /etc/shadow.


Qmail dan Virtual domains


Qmail mempunyai 2 email domains yaitu "local" dan "virtual". Local domain adalah usernya sama dengan yang terdapat dalam /etc/passwd. Virtual domain sama dengan daftar domain yang ada di direktori /var/qmail/control dalam file "virtualdomains". Vpopmail menggunakan file yang terdapat di /var/qmail/users yaitu assign dan file yang terdapat di /var/qmail/control yaitu virtualdomains. Dalam file assign dicompile menjadi file cdb. Ini merupakan sebuah file database untuk mempercepat dalam proses pencarian data. Kemudian setelah menemukan yang cocok qmail akan mengantarkan email tersebut ke direktori yang di temukan dari file database dan uid,gid-nya. Vpopmail menggunakan metode ini untuk mengantarkan email ke seluruh virtual domain dengan satu uid vpopmail dan gid vchkpw. Dan akan selalu secara langsung menuju ke direktori ~vpopmail/domains/<virtualdomain>.


Saat qmail-local mendapatkan informasi dari file users/assign itu akan secara otomatis memproses file .qmail di home direktori tersebut. Normalnya file .qmail-<user> dapat digunakan untuk forward e-mail, alias atau menjalankan program seperti ezmlm. Jika tidak sama dengan apa yang ditemukan, qmail-local akan mencari sebuah file .qmail-default. Vpopmail menggunakan file ini untuk menjalankan program vdelivermail. Program ini mempunyai 2 buah parameters, yang pertama tidak digunakan, parameter yang kedua adalah mengantarkan email ke default (postmaster) jika user virtual domain tidak dapat ada. Pada dasarnya default itu bisa saja merupakan sebuah directory atau di forward ke email address lain atau "bounce-no-mailbox" yang akan mengembalikan email tersebut ke si pengirim.

Pada saat vdelivermail mulai, itu memanggil vpopmail api untuk mencheck sebuah virtual domain user. Jika user tersebut ada, email akan diantarkan ke directory tersebut. Jika vpopmail di configure menggunakan hard quota (defaultnya 50 MB), size di Maildir/new dan Maildir/cur dari user tersebut akan dihitung. Jika melebihi dari limit quota yang diberikan email tersebut akan kembali ke si pengirim dengan pesan pemberitahuan bahwa mailbox user tersebut penuh. Jika email yang dikirimkan itu sizenya lebih kecil atau sama dengan 1Kb masih akan diterima. Ini berarti program system administration dapat selalu mendapatkan pesan untuk user tersebut.



Conversi user account


Program vconvert dapat mengkonversikan email account dari format yang satu ke format yang lain. Dapat mengkonversi antara /etc/passwd, vpasswd, mysql (small version) dan mysql (large version).


Sekarang pengguna vpopmail dapat mengkonversi dari domain yang sudah ada menjadi mysql domain. Supaya mudah dikonversi ke mesin mysql gunakan command : vconvert -c -s . Ini akan membuat semua domain yang ada di direktori ~vpopmail/domains akan membaca setiap vpasswd file dan memasukkan ke dalam vpopmail mysql tabel. File vpasswd akan aman, tidak ada yang berubah. Vconvert dapat berjalan dengan lebih dari satu domain pada saat yang bersamaan. Ini dapat di lakukan dengan menjalankan command : vconvert \c \s domain1 domain2 ...dst


Untuk mengkonversi semua user (kecuali root dan systems accounts) ke dalam sebuah mysql domain jalankan command : vconvert -e -s domain. Ini akan membaca semua account yang ada dalam /etc/passwd dan dibuat dalam mysql dengan menggunakan password yang sudah ada. Passwordnya dapat dari /etc/passwd atau /etc/shadow. Password ini bisa berjalan dengan program autentikasi vchkpw.



Security and pop server under tcpserver


Jika semua pop email account ada di bawah virtual domain, dapat memperkuat security untuk pop servernya dengan menjalan tcpserver menggunakan uid vpopmail dan gid vchkpw ( tcpserver -u uid -g gid ).




Commands


Membuat atau menambahkan virtual domain


vadddomain [nama domain]

or

vadddomain [nama domain] [password]



Menghapus virtual domain


vdeldomain [nama domain]


Menambahkan user

Penambahan untuk user domain utama (~vpopmail/users) :


vadduser [user]

or

vadduser [user] [password]


Penambahan untuk user virtual domain (~vpopmail/domains) :


vadduser [user@domain]

or

vadduser [user@domain] [password] [quota]


Menghapus user


vdeluser [user]

or

vdeluser [user@domain]


Merubah password


vpasswd [user] [password]

or

vpasswd [user@domain] [password]


Set quota


vsetuserquota [user@domain] [quota]



Bouncing mail


Directory structure


Overall vpopmail directory structure


Vpopmail mempunyai home direktori sendiri. Didalam direktorinya terdapat :


bin - berisi semua file binaries program

lib - berisi file libvpopmail.a

include - berisi file header C

users - kompitibel antara /etc/passwd dgn vpopmail users satu domain

domains - tempat semua virtual domain ada


Virtual domain user directory structure


Vpopmail menggunakan struktur dasar adaptive direktori sebuah file ".dir-control" yang mana secara otomatis mengatur fungsi vpopmail api vadduser dan vdeluser. Untuk jumlah user yang kurang atau sama dengan 100 user, semua direktorinya ada di direktori virtual domain. Untuk jumlah yang lebih dari 100 user struktur dasar adaptive digunakan. Ide dasarnya adalah memangkas direktori Maildir user menjadikannya multiple direktori dan sub direktori sehingga tidak akan pernah melebihi dari 100 direktori user per satu direktorinya.


Default setup untuk direktorinya adalah 62 direktori dalam 3 level dan 100 user direktor per direktorinya. Jadi jumlah total seluruh user direktori adalah sama dengan 100 + (62 x 100) + (62 x 62 x 100) + (62 x 62 x 62 x 100) = 24.223.500 direktori. Jumlah tersbut lebih dari cukup untuk site dan ada kemungkinan melebihi teknologi dari struktur direktori.


Jika anda memerlukan user direktori dalam jumlah yang besar, pastikan file system anda mempunyai inode yang lebih tinggi dari yang normal atau standart.


Vpopmail akan secara otomatis mebuat direktori dan sub direktori sesuai dengan kebutuhan dan populasi dari tiap - tiap direktori per 100 user account. Segera jika sudah mendekati 100 users akan membuat direktori baru atau sub direktori baru dan meletakkan user baru di direktori tersebut.


Saat ini tidak ada code untuk membuang user yang dihapus atau merekonstruksi direktori.


Internationalization


Ada 2 buah pesan yang dapat dimasukkan ke dalam email, keduanya digunakan untuk pesan bounce. Yang pesan pertama untuk user yang tidak ada, dan pesan kedua untuk user yang mailboxnya sudah melebihi batas quota. System administrator dapat mengubah pesan tersebut dengan membuat sebuah file .over-quota.msg dan .no-user.msg didalam direeektori virtual domain atau dalam direktori utama virtual domain. Jika file .over-quota.msg atau .no-user.msg tidak ditemukan di direktori virtual domain, secara otomatis akan mencari di direktori utama virtual domain. Jika di sana tidak ditemukan juga maka default pesan untuk bounce message yang akan dikirimkan.


Dot-qmail processing


Setiap virtualdomain mempunyai directory sendiri di bawah ~vpopmail/domains. Setiap penambahan domain dimasukkan ke dalam file users/assign dan qmail-local akan mengantarkan email ke directory ini. Oleh karena itu setiap proses file .qmail bekerja di dalam setiap virtualdomain. Untuk dapat berjalan dengan baik file .qmail hanya memerlukan nama user sebagai extension, contoh : .qmail-joe untuk user joe.

Dalam proses ezmlm juga menggunakan file .qmail sehingga bisa juga digunakan dengan vpopmail.


Jika tidak ada user yang cocok dengan file .qmail maka akan memproses file .qmail-default. Dalam file ini terdapat program vdelivermail. Program ini membaca database autentikasi (mysql atau vpasswd.cdb) dan mengantarkan mail ke user direktori. Parameter terakhir dari vdelivermail dapat berupa sebuah maildir dengan owner vpopmail/vchkpw, jadi semua email yang error pada akhirnnya akan diterima disini. Atau bisa juga berupa sebuah email address dan setiap mail yang error akan diforward ke email address tersebut. Atau parameter terakhir dari vdelivermail dapat di ganti dengan text bounce-no-mailbox. Ini akan membuat setiap tidak menemukan user dalam directory tersebut akan kembali ke si pengirim.


Qmailadmin


Qmailadmin adalah sebuah interface dalam bentuk web untuk mengelola vpopmail domains. Dalam version 0.26 menggunakan vpopmail api. Ini berarti dapat mengelola autentikasi mysql atau vpasswd.cdb. Disini kita bisa melakukan penambahan user, mengelola forward atau aliases, ezmlm mailing list dan autorespon.


Sqwebmail


Sqwebmail adalah sebuah email client dalam bentuk web atau homepage. Dapat membaca dan menulis secara langsung ke Maildir user. Dan dapat berhubungan dengan file vpasswd dari vpopmail. Modifikasi dari version 0.24 yang menggunakan vpopmail api di http://www.inter7.com/vpopmail Dan bisa juga menset password user dan memforward email user.


Courier-imap


Courier-imap adalah sebuah server IMAP yang support Maildir. Di versi yang baru bisa mennggunakan file vpasswd vpopmail.


Mysql authentication


Cdb authentication


Vpopmail API


Seperti dalam version 3.4.10 membuat sebuah library yang terletak di ~vpopmail/lib/libvpopmail.a. Link library ini ke aplikasi akses yang menggunakan C functions. Kumpulan header file ada di ~vpopmail/include.


int vadddomain( char *domain)


domain = virtualdomain baru


int vdeldomain( char *domain)

domain = virtualdomain yang akan dihapus


int vadduser( char *user, char *domain, char *password, int apop)


user = nama user baru

domain = virtualdomain

password = password

apop = 0 untuk pop dan 1 untuk apop


int vdeluser( char *user, char *domain )


user = user yang dihapus

domain = virtualdomain


int vpasswd( char *user, char *domain, char *password)


user = nama user yang akan ubah password

domain = virtualdomain

password = password


int vsetuserquota( char *user, char *domain, char *quota)


user = nama user yang akan ubah quota

domain = virtualdomain

char = jumlah quota dalam bytes. Bisa juga menggunakan M/m atau K/k

contoh : 5M atau 5m sama dengan 5 Mega bytes.





Vpopmail authentication API


int vauth_addomain( char *domain )


domain = nama domain yang ditambahkan ke system autentikasi


int vauth_deldomain( char *domain )


domain = nama domain yang dihapus dari system autentikasi


int vauth_adduser( char *user, char *domain, char *crypted_password, char *dir, int apop )


user = user yang akan ditambahkan ke system autentikasi

domain = nama domain

crypted_password = encrypted password

dir = letak direktori Maildir

apop = 0 untuk pop dan 1 untuk apop


int vauth_deluser( char *user, char *domain )


user = user yang dihapus dari system autentikasi

domain = nama domain


int vauth_password( char *user, char *domain, char *crypted_password )


user = user yang ubah password dalam system autentikasi

domain = nama domain

crypted_password = enncrypted password


int vauth_setquota( char *user, char *domain, char *quota )


user = user yang set quota dalam system autentikasi

domain = nama domain

quota = jumlah quota dalam bytes. Bisa juga menggunakan M/m atau K/k

contoh : 5M atau 5m sama dengan 5 Mega bytes.


Struct *passwd vauth_getpw( char *user, char *domain )


user = nama user yang memasukan password ke system autentikasi

domain = nama domain


int vauth_setpw( struct *passwd, char *domain )


passwd = pointer ke struktur passwd yang ada dalam system autentikasi

domain = nama domain

struct *vauth_user( char *user, char *domain, char *password, char *apop)


user = nama user yang autentikasi

domain = nama domain

password = password

apop = tidak digunakan


struct *vauth_getall( char *domain, int first, int sort_it )


domain = nama domain utk menerima password dari system autentikasi

first = 1 untuk mengambil record pertama, 0 untuk record berikutnya

sort_it = 1 mengurutkan daftar user berdasarkan huruf. Ini tidak berjalan

di metode vpasswd/cdb. Di mysql ditambahkan dengan query oleh pw_name.