Showing posts with label postfix complete setup. Show all posts
Showing posts with label postfix complete setup. Show all posts

Friday, August 29, 2008

Postfix complete setup

Postfix mail server setup on ubuntu 8.04



Step 1: Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin


# apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass


You will be asked a few questions:

New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
Create directories for web-based administration? <-- No
General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.com
SSL certificate required <-- Ok
Web server to reconfigure automatically: <-- apache2


Step 2 :Create The MySQL Database For Postfix/Courier

#vim /etc/postfix/postfixadmin-mysql.sql



#Postfix Admin # by sahabdeen  # License Info: http://www.postfixadmin.com/?file=LICENSE.TXT #  # This is the complete MySQL database structure for Postfix Admin. # If you are installing from scratch you can use this file otherwise you # need to use the TABLE_CHANGES.TXT or TABLE_BACKUP_MX.TXT that comes with Postfix Admin. # # There are 2 entries for a database user in the file. # One you can use for Postfix and one for Postfix Admin. # # If you run this file twice (2x) you will get an error on the user creation in MySQL. # To go around this you can either comment the lines below "USE MySQL" until "USE postfix". # Or you can remove the users from the database and run it again. # # You can create the database from the shell with: # # mysql -u root [-p] < comment="'Postfix" comment="'Postfix" comment="'Postfix" comment="'Postfix" comment="'Postfix" comment="'Postfix" comment="'Postfix" size="3">#mysql -u root -p < /etc/postfix/postfixadmin-mysql.sql 

Step 3:Creating Virtual Alias Maps:


#vim /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix

password = postfixpassword

hosts = 127.0.0.1

dbname = postfix

table = alias

select_field = goto

where_field = address


# vim /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix


password = postfixpassword


hosts = 127.0.0.1


dbname = postfix


table = mailbox


select_field = maildir


where_field = username


#additional_conditions = and active = '1'



#vim /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix

password = postfixpassword

hosts = 127.0.0.1

dbname = postfix

table = domain

select_field = domain

where_field = domain

#additional_conditions = and backupmx = '0' and active = '1'


#vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf

user = postfix

password = postfixpassword

hosts = 127.0.0.1

dbname = postfix

table = mailbox

select_field = quota

where_field = username

#additional_conditions = and active = '1'




#vim /etc/postfix/mysql_relay_domains_maps.cf

user = postfix

password = postfixpassword

hosts = 127.0.0.1

dbname = postfix

table = domain

select_field = domain

where_field = domain

additional_conditions = and backupmx = '1'


#sudo chgrp postfix /etc/postfix/mysql_*.cf

#sudo chmod 640 /etc/postfix/mysql_*.cf


Step 4:Create a vmail user

sudo groupadd -g 5000 vmail sudo useradd -m -g vmail -u 5000 -d /home/vmail -s /bin/bash vmail

Step 5:Configuring Postfix with MySQL maps

vim /etc/postfix/main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific: Specifying a file name will cause the first

# line of that file to be used as the name. The Debian default

# is /etc/mailname.

#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)

biff = no

# appending .domain is the MUA's job.

append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings

#delay_warning_time = 4h

# TLS parameters

smtpd_tls_cert_file = /etc/postfix/smtpd.cert

smtpd_tls_key_file = /etc/postfix/smtpd.key

smtpd_use_tls = yes

smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for

# information on enabling SSL in the smtp client.

myhostname = gis.keltron.org

mydestination =

relayhost =

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

myorigin = /etc/mailname

mynetworks = 127.0.0.0/8

mailbox_size_limit = 0

recipient_delimiter = +

inet_interfaces = all

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_mailbox_limit = 51200000

virtual_minimum_uid = 5000

virtual_uid_maps = static:5000

virtual_gid_maps = static:5000

virtual_mailbox_base = /home/vmail

virtual_transport = virtual

# Additional for quota support

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

virtual_mailbox_limit_override = yes

virtual_maildir_limit_message = Sorry, the your maildir has overdrawn your diskspace quota, please free up some of spaces of your mailbox try again.

virtual_overquota_bounce = yes

Postfixadmin

cd /var/www

#wget http://downloads.sourceforge.net/postfixadmin/postfixadmin-2.1.0.tgz?modtime=1105140809&big_mirror=0

#tar -xvgf postfixadmin_2.1.0.tar.gz

#cd postfixadmin_2.1.0

#vim DATABASE_MYSQL.TXT

delte all the entries under postfix/mysql

# mysql -upostfixadmin -p postfix < /var/www/postfixadmin-2.1.0/DATABASE_MYSQL.TXT

password=postfixadmin

# mv config.inc.php.sample config.inc.php



Courier-IMAP and Authentication Services

vim /etc/courier/authmysqlrc

MYSQL_SERVER 127.0.0.1

MYSQL_USERNAME postfixadmin

MYSQL_PASSWORD postfixadmin

MYSQL_DATABASE postfix

MYSQL_USER_TABLE mailbox

MYSQL_LOGIN_FIELD username

MYSQL_NAME_FIELD name

MYSQL_CRYPT_PWFIELD password

#MYSQL_CLEAR_PWFIELD password

MYSQL_MAILDIR_FIELD maildir

MYSQL_QUOTA_FIELD concat(quota,'S')

MYSQL_HOME_FIELD '/home/vmail'

MYSQL_UID_FIELD '5000'

MYSQL_GID_FIELD '5000'





/etc/init.d/courier-authdaemon restart  /etc/init.d/courier-imap restart /etc/init.d/courier-pop restart  tail -f /var/log/mail*

SMTP Authentication:



apt-get install libsasl2 libsasl2-modules libpam-mysql openssl

vim /etc/pam.d/smtp

auth required pam_mysql.so user=postfix passwd=postfixpassword host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1





account sufficient pam_mysql.so user=postfix passwd=postfixpassword host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 md5=1



vim /etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd

mech_list: PLAIN LOGIN

log_level: 5



Edit the file /etc/default/saslauthd like this:

vim /etc/default/saslauthd

START=yes

MECHANISMS="pam"

OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd"

mkdir /var/spool/postfix/var/
mkdir /var/spool/postfix/var/run/
mkdir /var/spool/postfix/var/run/saslauthd
chown -R root:sasl /var/spool/postfix/var/
chmod 710 /var/spool/postfix/var/run/saslauthd
adduser postfix sasl

ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd

vim /etc/postfix/main.cf



smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination



# modify the existing smtpd_sender_restrictions



smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit





smtpd_sasl_auth_enable = yes



broken_sasl_auth_clients = yes



#smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2



smtpd_sasl_security_options = noanonymous



smtpd_sasl_local_domain=





Open /etc/init.d/postfix, search for the FILES variable and add etc/postfix/sasl/smtpd.conf to the list:


FILES="etc/localtime etc/services etc/resolv.conf etc/hosts \ etc/nsswitch.conf etc/nss_mdns.config etc/postfix/sasl/smtpd.conf"

Restart Postfix and start saslauthd:


# /etc/init.d/postfix restart
# /etc/init.d/saslauthd start



Roundcube setup

sudo apt-get install roundcube

vim /etc/apache2/sites-available/webmail

         ServerAdmin webmaster@example.com #change these!         ServerName      webmail.example.com         ServerAlias     mail.example.com         DocumentRoot /var/www/roundcube                          Options Indexes FollowSymLinks MultiViews                 AllowOverride all                 Order allow,deny                 allow from all                  ServerSignature Off  ln -s /usr/share/roundcube /var/www/webmail

vim /var/www/webmail/config/main.inc.php

Edit the following

$rcmail_config['default_host'] = 'localhost'; $rcmail_config['virtuser_file'] = '/home/vmail';$rcmail_config['virtuser_query'] = "SELECT username FROM postfix.mailbox WHERE username = '%u'";