Anda di halaman 1dari 7

INSTALL MAIL SERVER

Postfix, Courier dan Squirrel Mail

Assalamualaykum Wr Wb,

Setelah sekian lama belajar buat mail server dengan postfix akhirnya bisa juga, maklum budaya belajarnya di lepas ke alam.
Namun setiap yang kita lakukan pasti ada maksud dan hikmah di balik itu walaupun tidak semua orang dapat merasakannya.
Supaya tidak lupa saya buat dokumentasi. Namun ini hanya sekedar cara installnya saja. Harap di cari sendiri maksud dari setiap
perintah maupun script. Karena penulis juga masih belajar :D .

#cd /usr/ports/mail/postfix27/
#make install clean

Pilih option di bawah ini


[X] MYSQL MySQL maps (choose version with WITH_MYSQL_VER)  untup map ke mysql
[X] VDA VDA (Virtual Delivery Agent 32Bit)  untuk quota mailbox per user

You need user "postfix" added to group "mail".


Would you like me to add it [y]?y
Would you like to activate Postfix in /etc/mail/mailer.conf [n]?y

Tambahkan pada /etc/rc.conf (kita bunuh service sendmailnya supaya tidak bentrok dengan postfix)
#ee /etc/rc.conf
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO”

Tambahkan/buat file (bila belum ada) pula pada /etc/periodic.conf


daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

Buat database postfix di mysql


# mysql -u root –p
mysql>create database postfix;
mysql>GRANT ALL privileges on postfix.* to postfix@localhost identified by 'postfix';
mysql>flush privileges;
mysql>quit

Buat file postfix-table.sql yang isinya (taruh saja filenya di directory postfixnya) :
#ee postfix-table.sql
CREATE TABLE `admin` (
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`),
KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Postfix Admin - Virtual Admins';

CREATE TABLE `alias` (


`address` varchar(255) NOT NULL default '',
`goto` text NOT NULL,
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(4) NOT NULL default '1',
PRIMARY KEY (`address`)

muchaamin@gmail.com 15/02/2011
www.muchaamin.web.id
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Virtual Aliases - mysql_virtual_alias_maps';

CREATE TABLE `domain` (


`domain` varchar(255) NOT NULL default '',
`description` varchar(255) NOT NULL default '',
`aliases` int(10) NOT NULL,
`mailboxes` int(10) NOT NULL,
`maxquota` int(10) NOT NULL,
`transport` varchar(255) NOT NULL,
`backupmx` tinyint(1) NOT NULL,
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',

`active` tinyint(4) NOT NULL default '1',


PRIMARY KEY (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Virtual Domains - mysql_virtual_domains_maps';

CREATE TABLE `domain_admins` (


`username` varchar(255) NOT NULL default '',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Postfix Admin - Domain Admins';

CREATE TABLE `log` (


`timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
`username` varchar(255) NOT NULL default '',
`domain` varchar(255) NOT NULL default '',
`action` varchar(255) NOT NULL default '',
`data` varchar(255) NOT NULL default '',
KEY `timestamp` (`timestamp`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Postfix Admin - Log';

CREATE TABLE `mailbox` (


`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`maildir` varchar(255) NOT NULL default '',
`quota` varchar(255) NOT NULL default '',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(4) NOT NULL default '1',
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Virtual Mailboxes - mysql_virtual_mailbox_maps';

CREATE TABLE `vacation` (


`email` varchar(255) NOT NULL default '',
`subject` varchar(255) NOT NULL default '',
`body` text NOT NULL,
`cache` text NOT NULL,
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`email`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Postfix Admin - Virtual Vacation';

CREATE TABLE `user` (


`email` varchar(255) NOT NULL default '',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`email`),
KEY `domain` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Relay Recipient'

muchaamin@gmail.com 15/02/2011
www.muchaamin.web.id
Import tablenya ke dalam database postfix yang telah di buat :
#mysql -u postfix -p postfix < postfix-table.sql
# cp /etc/mail/mailer.conf /etc/mail/mailer.conf-default

Buat file aliases di folder postfixnya


#ee aliases
root: admin@muchaamin.web.id
postmaster: postmaster@muchaamin.web.id
virusalert: postmaster@muchaamin.web.id
abuse: abuse@muchaamin.web.id
#/usr/local/sbin/postalias aliases

ss
Hapus main.cf lalu buat yang baru
# rm main.cf
#ee main.cf
smtpd_banner = mail.muchaamin.web.id
biff = no
append_dot_mydomain = no
myhostname = mail.muchaamin.web.id
alias_maps = hash:/usr/local/etc/postfix/aliases
alias_database = hash:/usr/local/etc/postfix/aliases
mydestination = localhost
mynetworks = 127.0.0.0/8, 192.168.22.0/24
recipient_delimiter = +
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:125
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 205343360
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 125
virtual_transport = virtual
virtual_uid_maps = static:125
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, this user has reach mailbox quota limit.
virtual_overquota_bounce = yes

Buat file mysql_virtual_alias_maps.cf di folder postfixnya


#ee mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Buat file mysql_virtual_domains_maps.cf di folder postfix


#ee mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'

Buat file mysql_virtual_mailbox_limit_maps.cf


#ee mysql_virtual_mailbox_limit_maps.cf

muchaamin@gmail.com 15/02/2011
www.muchaamin.web.id
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s'

Buat file mysql_virtual_mailbox_maps.cf


#ee mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Jalankan service postfixnya


#/usr/local/etc/rc.d/postfix start
Cannot 'start' postfix. Set postfix_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.

Kalau ada error seperti diatas tambahkan postfix_enable="YES" ke /etc/rc.conf


#ee /etc/rc.conf
postfix_enable=”YES”

Kemudian jalankan lagi postfixnya


#/usr/local/etc/rc.d/postfix start

Kalau sudah nggk ada pesan errornya berarti postfix udah jalan. tinggal kita tes aja pake telnet
telnet 192.168.22.242 25
helo alif.net
250 mail.muchaamin.web.id
mail from: admin@alif.net
250 2.1.0 Ok
rcpt to: mamin@satnetcom.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
testing
subject: testing
.
250 2.0.0 Ok: queued as 739771703E
quit

kemudian liat di maillog nya


#tail -f /var/log/maillog
Feb 14 13:03:00 alif postfix/smtpd[9697]: 739771703E: client=unknown[192.168.22.241]
Feb 14 13:05:37 alif postfix/cleanup[9716]: 739771703E: message-id=<>
Feb 14 13:05:37 alif postfix/qmgr[9628]: 739771703E: from=<admin@alif.net>, size=211, nrcpt=1 (queue active)
Feb 14 13:05:37 alif postfix/smtp[9719]: 739771703E: to=<mamin@satnetcom.com>,
relay=mx2.satnetcom.com[203.80.8.36]:25, delay=172, delays=171/0.03/0.07/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok:
queued as EDEA238C81C)
Feb 14 13:05:37 alif postfix/qmgr[9628]: 739771703E: removed
Feb 14 13:07:21 alif postfix/smtpd[9697]: disconnect from unknown[192.168.22.241]

Log diatas menandakan email sudah terkirim. silahkan cek pada email penerima.

muchaamin@gmail.com 15/02/2011
www.muchaamin.web.id
INSTALL IMAP dengan courier

#cd /usr/ports/security/courier-authlib
#make install clean

Pilih
[X] AUTH_MYSQL MySQL support

# cd /usr/ports/mail/courier-imap/
# make install clean

tambahkan script di rc.conf


#ee /etc/rc.conf
courier_authdaemond_enable="YES"
courier_imap_imapd_ssl_enable="YES"
courier_imap_imapd_enable="YES"
courier_imap_pop3d_ssl_enable="YES"
courier_imap_pop3d_enable="YES"

backup file authmysqlrc


#mv /usr/local/etc/authlib/authmysqlrc /usr/local/etc/authlib/authmysqlrc-default

buat file authmysqlrc


#ee /usr/local/etc/authlib/authmysqlrc
MYSQL_CRYPT_PWFIELD password
MYSQL_DATABASE postfix
MYSQL_GID_FIELD '125'
MYSQL_HOME_FIELD '/home/vmail/'
MYSQL_LOGIN_FIELD username
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_OPT 0
MYSQL_PASSWORD postfix
MYSQL_QUOTA_FIELD quota
MYSQL_SERVER 127.0.0.1
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_UID_FIELD '125'
MYSQL_USERNAME postfix
MYSQL_USER_TABLE mailbox

Backup file authdaemonrc


# mv /usr/local/etc/authlib/authdaemonrc /usr/local/etc/authlib/authdaemonrc-default
#ee usr/local/etc/authlib/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=0
DEFAULTOPTIONS="wbnodsn=1"
LOGGEROPTS=""

Jalankan couriernya
#/usr/local/etc/rc.d/courier-authdaemond start
#/usr/local/etc/rc.d/courier-imap-imapd-ssl start
#/usr/local/etc/rc.d/courier-imap-imapd start
#/usr/local/etc/rc.d/courier-imap-pop3d-ssl start
#/usr/local/etc/rc.d/courier-imap-pop3d start
# chown postfix:postfix /home/vmail/
# chmod 755 /home/vmail/

muchaamin@gmail.com 15/02/2011
www.muchaamin.web.id
Install Postfix admin
#cd /usr/ports/mail/postfixadmin/
#make install clean
#cd /usr/ports/mail/php5-imap
#make install clean

Tambahkan di httpd.conf
#ee /usr/local/etc/apache22/httpd.conf
<Directory /usr/local/www/postfixadmin>
AllowOverride None
Order Allow,deny
Allow from all
</Directory>
Alias /mailadmin /usr/local/www/postfixadmin/

Restart apachenya
#/usr/local/etc/rc.d/apache22 restart

Edit pada config.inc.php di directory


#ee /usr/local/www/postfixadmin/config.inc.php
$CONF['configured'] = true; (sebelumnya
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
$CONF['domain_path'] = 'YES';
$CONF['default_aliases'] = array (
'abuse' => 'abuse@alif.net',
'hostmaster' => 'hostmaster@alif.net',
'postmaster' => 'postmaster@alif.net',
'webmaster' => 'webmaster@alif.net'
$CONF['quota'] = 'YES';

buka di browser
http://192.168.22.242/mailadmin/setup.php
pastikan tidak ada errornya
setup passwordnya
misal isi saja admin
kemudian masukkan di config.inc.php pada postfixadmin (jgn lupa yang lama di disable kasih tanda //)
#ee /usr/local/www/postfixadmin/config.inc.php
//$CONF['setup_password'] = 'changeme'
$CONF['setup_password'] = 'ddb6f38439d03be66df49a1406e08dd0:fde0ab82aacd8815ab2070909f00e16a41578f9f';

Setup password login ke postfix admin (harus beda antara password yg di buat td)
Setup password : admin
Admin : postmaster@alif.net
Password : alif
Password (again): alif

buka di browser
http://192.168.22.242/mailadmin/
masukkan user dan password postmaster tadi
selesai

muchaamin@gmail.com 15/02/2011
www.muchaamin.web.id
INSTALL SQUIRELMAIL
sebagai WebMail

#cd /usr/ports/mail/squirrelmail
#make install clean

Tambahkan script buat squirrelmail di httpd.conf


#ee /usr/local/etc/apache22/httpd.conf
<Directory /usr/local/www/squirrelmail>
AllowOverride None
Order Allow,deny
Allow from all
</Directory>
Alias /webmail /usr/local/www/squirrelmail/

Restart apachenya
#/usr/local/etc/rc.d/apache22 restart

Buka di browser
http://192.168.22.242/webmail

Selesai

Note :
Mail server yang dibuat ini belum ada antivirusnya, InsyaAlloh di bahas untuk install antivirsnya

muchaamin@gmail.com 15/02/2011
www.muchaamin.web.id

Anda mungkin juga menyukai