15.11.09

:: install postfix, cyrus, courier, mysql, postfixadmin, squirrelmail on opensuse

:: what is
please take a look this.

:: install dependency
+ installing berkeleyDB
+ installing MySQL
+ installing Apache
+ installing PHP

:: remove sendmail
[ root:~ ]# rpm -e sendmail --nodeps

:: build cyrus-sasl
[ root: ~ ]# wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.23.tar.gz
[ root: ~ ]# tar -xzf cyrus-sasl-2.1.23.tar.gz
[ root: ~ ]# groupadd mail
[ root: ~ ]# useradd -u 96 -d /usr/cyrus -g mail cyrus
[ root: ~ ]# passwd cyrus
[ root: ~ ]# cd cyrus-sasl-2.1.23/
[ root: cyrus-sasl-2.1.23 ]# export CPPFLAGS="-I/usr/local/mysql/include/mysql"
[ root: cyrus-sasl-2.1.23 ]# ./configure --enable-anon --enable-plain --enable-login --enable-sql --disable-krb4 --disable-otp --disable-cram --disable-digest --with-mysql=/usr/local/mysql --with-plugindir=/usr/lib/sasl2 --without-pam --without-saslauthd --without-pwcheck
[ root: cyrus-sasl-2.1.23 ]# make && make install

:: installing Postfix

+ download postfix
[ root:~ ]# wget http://mirror.postfix.jp/postfix-release/official/postfix-2.6.5.tar.gz
[ root:~ ]# tar -xzf postfix-2.6.5.tar.gz

+ build postfix
[ root: ~ ]# groupadd -g 1001 postfix
[ root: ~ ]# groupadd -g 1002 postdrop
[ root: ~ ]# useradd -g 1001 -u 1001 postfix -G postdrop -d /dev/null -s /bin/false postfix
[ root: ~ ]# cd postfix-2.6.5/
[ root: postfix-2.6.5 ]# ln -sf /usr/local/BerkeleyDB.4.8/include/db.h /usr/include/db.h
[ root: postfix-2.6.5 ]# ln -s /usr/local/include/sasl /usr/include/sasl
[ root: postfix-2.6.5 ]# echo '/usr/local/mysql/lib/mysql' >> /etc/ld.so.conf
[ root: postfix-2.6.5 ]# ldconfig
[ root: postfix-2.6.5 ]# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_TLS -DUSE_CYRUS_SASL -I/usr/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto -lsasl2 -L/usr/local/BerkeleyDB.4.8/lib'
[ root: postfix-2.6.5 ]# make && make install

configure Postfix installation like this:
install_root: [/]
tempdir: [/root/postfix-2.6.5]
config_directory: [] /etc/postfix
command_directory: [] /usr/sbin
daemon_directory: [] /usr/libexec/postfix
data_directory: [] /var/lib/postfix
html_directory: [] no
mail_owner: [] 1001
mailq_path: [] /usr/bin/mailq
manpage_directory: [] /usr/local/man
newaliases_path: [] /usr/bin/newaliases
queue_directory: [] /var/spool/postfix
readme_directory: [] no
sendmail_path: [] /usr/sbin/sendmail
setgid_group: [] 1001

+ configuration Postfix on main.cf file
[ root: ~ ]# cd /etc/postfix/
[ root: postfix ]# vi main.cf
#
# on main configure,
# change these option like :
#
myhostname = mail.toxpenguin.com
mydomain = toxpenguin.com
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks_style = host
home_mailbox = Maildir/

#
# add these configuration :
#
# Configuration for MySQL
virtual_gid_maps = static:1001
virtual_uid_maps = static:1001
virtual_minimum_uid = 1001
virtual_transport = virtual
virtual_mailbox_base = /var/mail/
virtual_mailbox_limit = 112400000
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

#
# Configure for TLS
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_use_tls = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_key_file = /etc/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/ssl/smtpd.pem
tls_ramdom_source = dev:/dev/urandom

#
# Configure for SASL
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_application_name = smptd
smtpd_sasl_security_options = noanonymous
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,permit

+ edit master.cf
[ root: postfix ]# vi master.cf
rewrite unix - - y - - trivial-rewrite

+ make SSL for Postfix
[ root: postfix ]# cd /etc/ssl/
[ root: ssl ]# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

:: configure MySQL DB for Postfix
+ create database for postfix
[ root: ~ ]# /usr/local/mysql/bin/mysql -u root -p
Enter password: [ mysqlrootpass ]
mysql> create database postfix;
Query OK, 1 row affected (0.05 sec)

mysql> grant all on postfix.* to postfix@localhost identified by 'postfixpass';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

+ make virtual domains configuration files
[ root: ~ ]# cd /etc/postfix/
[ root: postfix ]# vi mysql_virtual_domains_maps.cf
#
# Add the line like :
user = postfix
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT domain AS virtual FROM domain WHERE domain='%s'

+ make virtual mailbox configuration files
[ root: postfix ]# vi mysql_virtual_mailbox_maps.cf
#
# Add the line like :
user = postfix
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active='1'

+ make virtual alias configuration files
[ root: postfix ]# vi mysql_virtual_alias_maps.cf 
#
# Add the lines like:
user = postfix
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active='1'

:: installing Courier-authlib
[ root: ~ ]# wget https://sourceforge.net/projects/courier/files/authlib/0.62.4/courier-authlib-0.62.4.tar.bz2/download
[ root: ~ ]# tar -xjf courier-authlib-0.62.4.tar.bz2
[ root: ~ ]# zypper in pam-devel
[ root: ~ ]# cd courier-authlib-0.62.4/
[ root: courier-authlib-0.62.4 ]# ./configure --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql LDFLAGS="-L/usr/local/BerkeleyDB.4.8/lib"
[ root: courier-authlib-0.62.4 ]# make && make install

:: configure Courier Authlib
+ authdaemonrc
[ root: ~ ]# vi /usr/local/etc/authlib/authdaemonrc
#
# add lines like:
authmodulelist="authmysql authpam"
DEBUG_LOGIN=1
daemons=1

+ authmysqlrc
[ root: ~ ]# vi /usr/local/etc/authlib/authmysqlrc
#
# Add lines like:
MYSQL_server localhost
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfixpass
MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD '1001'
MYSQL_GID_FIELD '1001'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/var/mail'
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir

+ configure SASL on smtpd.conf
[ root: ~ ]# vi /usr/lib/sasl2/smtpd.conf
#
# Add the lines like :
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/usr/local/var/spool/authdaemon/socket

+ change owner of authdaemond directory
[ root: ~ ]# chown -R postfix.postfix /usr/local/var/spool/authdaemon/

+ change permisson on authdaemon directory
[ root: ~ ]# chmod o+x /usr/local/var/spool/authdaemon/

+ change owner of mail directory
[ root: ~ ]# chown -R postfix.postfix /var/mail/

:: installing Courier Imap
please compiled courier imap by ordinary users (tox) on the box.
[ root: ~ ]# su - tox
tox@suse:~> wget https://sourceforge.net/projects/courier/files/imap/4.6.0/courier-imap-4.6.0.tar.bz2/download
tox@suse:~> tar -xjf courier-imap-4.6.0.tar.bz2
tox@suse:~> cd courier-imap-4.6.0/
tox@suse:~/courier-imap-4.6.0> ./configure --prefix=/usr/local/courier --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql --with-authmysql --with-authmysql=yes --with-authchangepwdir LDFLAGS="-L/usr/local/BerkeleyDB.4.8/lib"
tox@suse:~/courier-imap-4.6.0> make
tox@suse:~/courier-imap-4.6.0> exit
logout

build courier imap by root users.
[ root: ~ ]# cd /home/tox/courier-imap-4.6.0/
[ root: courier-imap-4.6.0 ]# make install
[ root: courier-imap-4.6.0 ]# make install-configure

:: installing postfixadmin
+ build postfixadmin
[ root: ~ ]# wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin_2.3.tar.gz/download
[ root: ~ ]# tar -xzf postfixadmin_2.3.tar.gz
[ root: ~ ]# mv postfixadmin-2.3/ /usr/local/apache2/htdocs/postfixadmin

+ configure postfixadmin
[ root: ~ ]# cd /usr/local/apache2/htdocs/postfixadmin/
[ root: postfixadmin ]# vi config.inc.php
#
# configure on these line :
#
$CONF['configured'] = true;

$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfixpass';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';

+ webase installation
goto url on http://yourip/postfixadmin/setup.php
ex: http://10.100.100.35/postfixadmin/setup.php
postfixadmin automatically scan your configuration..change password for this and don't forget delete setup.php file after all done..



+ add vdomain
goto url on http://yourip/postfixadmin
login with user admin and added vdomain on it.


+ add mailbox
virtual list - add mailbox


:: starting Mail Service
[ root: ~ ]# /usr/local/sbin/authdaemond start
[ root: ~ ]# /usr/local/courier/libexec/imapd.rc start
[ root: ~ ]# /usr/local/courier/libexec/imapd-ssl.rc start
[ root: ~ ]# /usr/sbin/postfix start

:: testing
+ postfix
[ root: ~ ]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 suse.localdomain ESMTP
ehlo localhost
250-suse.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: tix@toxpenguin.com
250 2.1.0 Ok
rcpt to: hai@toxpenguin.com
250 2.1.5 Ok
data
354 End data with .
testink from tix..

:D

.
250 2.0.0 Ok: queued as 1A75E1477F0
quit
221 2.0.0 Bye
Connection closed by foreign host.


+ courier-imap
[ root: ~ ]# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
a login hai@toxpenguin.com haipass
a OK LOGIN Ok.
a select inbox
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited
* 3 EXISTS
* 2 RECENT
* OK [UIDVALIDITY 1258253014] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
a OK [READ-WRITE] Ok
a logout
* BYE Courier-IMAP server shutting down
a OK LOGOUT completed
Connection closed by foreign host.

:: installing webmail (squirrelmail)
+ downloading squirrelmail
[ root: ~ ]# wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fprdownloads.sourceforge.net%2Fsquirrelmail%2Fsquirrelmail-1.4.19.tar.gz
[ root: ~ ]# tar -xzf squirrelmail-1.4.19.tar.gz
[ root: ~ ]# mv squirrelmail-1.4.19 /usr/local/apache2/htdocs/webmail

+ configure squirrelmail for webmail
[ root: ~ ]# cd /usr/local/apache2/htdocs/webmail/
[ root: webmail ]# ./configure
#
2. Server Settings
1. Domain
A. Update IMAP Settings
6. Authentication type : login
8. Server software : courier

B. Update SMTP Settings
7. SMTP Authentication : login
#
S Save data
Q Quit

+ access webmail
goto url on http://yourip/webmail and then login on it with your email accounts.


:: links
+ googlelinux
+ wowtutorial
+ phparchitecture