How to: configure postfix on slackware
I’m getting closer and closer to finish with my nice migration job, this is a quick note for self. It seems it wont be a nice how-to, so please read my last post about usage of this instructions, or come back later, if you want a somewhat more useful how-to.
#Create mail database
mysql -u root -p
CREATE DATABASE mail;
GRANT all privileges on mail.* TO vmailuser@localhost IDENTIFIED BY 'password123' ;
GRANT all privileges on mail.* TO vmailuser@127.0.0.1 IDENTIFIED BY 'password123' ;
#Create tables, please see the linked page on my previous post for more details
vi postfix_virtual.sql
mysql -u root -p < postfix_virtual.sql
#Create directories for vmail
mkdir /var/vmail
chown vmail:vmail /var/vmail
chmod 700 /var/vmail
#Configure postfix
vi /etc/postfix/master.cf
#as follows
vi /etc/postfix/main.cf
#as follows
cd /etc/postfix
echo "user = vmailuser" > mysql-aliases.cf
echo "password = password123" >> mysql-aliases.cf
echo "dbname = mail" >> mysql-aliases.cf
echo "query = SELECT destination FROM postfix_alias WHERE alias = '%s'" >> mysql-aliases.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-aliases.cf
echo "user = vmailuser" > mysql-relocated.cf
echo "password = password123" >> mysql-relocated.cf
echo "dbname = mail" >> mysql-relocated.cf
echo "query = SELECT destination FROM postfix_alias WHERE alias = '%s'" >> mysql-relocated.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-relocated.cf
echo "user = vmailuser" > mysql-transport.cf
echo "password = password123" >> mysql-transport.cf
echo "dbname = mail" >> mysql-transport.cf
echo "query = SELECT destination FROM postfix_transport where domain = '%s'" >> mysql-transport.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-transport.cf
echo "user = vmailuser" > mysql-virtual-domains.cf
echo "password = password123" >> mysql-virtual-domains.cf
echo "dbname = mail" >> mysql-virtual-domains.cf
echo "query = SELECT destination FROM postfix_virtual_domains WHERE domain = '%s'" >> mysql-virtual-domains.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-virtual-domains.cf
echo "user = vmailuser" > mysql-alias-maps.cf
echo "password = password123" >> mysql-alias-maps.cf
echo "dbname = mail" >> mysql-alias-maps.cf
echo "query = SELECT destination FROM postfix_virtual where email='%s'" >> mysql-alias-maps.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-alias-maps.cf
echo "user = vmailuser" > mysql-virtual-maps.cf
echo "password = password123" >> mysql-virtual-maps.cf
echo "dbname = mail" >> mysql-virtual-maps.cf
echo "query = SELECT maildir FROM postfix_users where email='%s' and postfix = 'y'" >> mysql-virtual-maps.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-virtual-maps.cf
echo "user = vmailuser" > mysql-recipient.cf
echo "password = password123" >> mysql-recipient.cf
echo "dbname = mail" >> mysql-recipient.cf
echo "query = SELECT maildir FROM postfix_users where email='%s' and postfix = 'y'" >> mysql-recipient.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-recipient.cf
echo "user = vmailuser" > mysql-sender.cf
echo "password = password123" >> mysql-sender.cf
echo "dbname = mail" >> mysql-sender.cf
echo "query = SELECT maildir FROM postfix_users where email='%s' and postfix = 'y'" >> mysql-sender.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-sender.cf
echo "user = vmailuser" > mysql-client.cf
echo "password = password123" >> mysql-client.cf
echo "dbname = mail" >> mysql-client.cf
echo "query = SELECT access FROM postfix_access WHERE source = '%s' AND type = 'client'" >> mysql-client.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-client.cf
echo "user = vmailuser" > mysql-relay-domains.cf
echo "password = password123" >> mysql-relay-domains.cf
echo "dbname = mail" >> mysql-relay-domains.cf
echo "query = SELECT domain FROM postfix_virtual_domains WHERE domain = '%s'" >> mysql-relay-domains.cf
echo "hosts = unix:/var/run/mysql/mysql.sock" >> mysql-relay-domains.cf
#create certificates
cd /etc/postfix
/usr/local/ssl/bin/openssl req -x509 -newkey rsa:1024 -keyout postfix.pem -out postfix.pem -nodes -days 365
#Common Name (eg, YOUR name) []:edax.hu
#secure files
chmod 640 /etc/postfix/mysql-*
chgrp postfix /etc/postfix/mysql-*
#courier setup
vi /usr/local/etc/authlib/authdaemonrc
#change the line starting with "authmodulelist=" as below.
#authmodulelist="authmysql authpam"
#
vi /usr/local/etc/authlib/authmysqlrc
#modify it as described below
MYSQL_SERVER 127.0.0.1
MYSQL_USERNAME vmailuser
MYSQL_PASSWORD password123
MYSQL_SOCKET /tmp/mysql.sock
#Use MYSQL_SOCKET instead of MYSQL_PORT.
#If you can’t do that, use MYSQL_PORT
#If your socket path is in a different location, please modify it.
MYSQL_OPT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE postfix_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
MYSQL_QUOTA_FIELD quota
MYSQL_AUXOPTIONS_FIELD
CONCAT(“disableimap=”,disableimap,”,disablepop3=”,disablepop3,”,disablewebmail=”,disablewebmail,”,sharedgroup=”,sharedgroup) MYSQL_WHERE_CLAUSE access=’y’
chmod 400 /usr/local/etc/authlib/authmysqlrc
cd /usr/lib/courier/etc/
#change START=NO to START=YES
vi imapd
vi pop3d
vi pop3d-ssl
vi imapd-ssl
cd /usr/lib/courier/share
#Common Name (eg, YOUR name) []:edax.hu
/usr/local/ssl/bin/openssl req -x509 -newkey rsa:1024 -keyout pop3d.pem -out pop3d.pem -nodes -days 365
/usr/local/ssl/bin/openssl req -x509 -newkey rsa:1024 -keyout imapd.pem -out imapd.pem -nodes -days 365
vi /etc/maildroprc
#insert the following lines
if ( $SIZE < 26144 )
{
exception {
xfilter “/usr/bin/spamassassin –prefspath=$HOME/$DEFAULT/.spamassassin/user_prefs ”
}
}
if (/^X-Spam-Flag: *YES/)
{
exception {
to “$HOME/$DEFAULT/.Spam/”
}
}
else
{
exception {
to “$HOME/$DEFAULT”
}
}
vi /usr/lib/sasl2/smtpd.conf
#insert the following lines
# smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login
sql_engine: mysql
sql_hostnames: localhost
sql_user: vmailuser
sql_passwd: password123
sql_database: mail
sql_select: select clear from postfix_users where email=’%u@%r’ and smtpaccess=’Y’
chown postfix:postfix /usr/local/lib/sasl2/smtpd.conf
chmod 400 /usr/local/lib/sasl2/smtpd.conf
#start it up
/usr/local/sbin/authdaemond start
cp /downloads/postfix/courier-0.60.0/courier/imapd.rc /etc/rc.d/rc.imapd
cp /downloads/postfix/courier-0.60.0/courier/pop3d /etc/rc.d/rc.pop3d
chmod 755 /etc/rc.d/rc.imapd /etc/rc.d/rc.pop3d
chown -R postfix /var/lib/postfix/
postfix start
mkdir /var/amavis
groupadd amavis
useradd amavis -g amavis -d /var/amavis -s /bin/bash
chmod 750 /var/amavis
mkdir /var/amavis/tmp
mkdir /var/amavis/db
chown -R amavis:amavis /var/amavis
cd /downloads/postfix/amavisd-new-2.6.2
cp amavisd /usr/local/sbin
chown root /usr/local/sbin/amavisd
chmod 755 /usr/local/sbin/amavisd
cp amavisd.conf /etc
chown root /etc/amavisd.conf
chmod 644 /etc/amavisd.conf
mkdir /var/virusmails
chmod 750 /var/virusmails/
chown amavis /var/virusmails/
vi /etc/amavisd.conf
groupadd clamav
useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav
cd /downloads/postfix/clamav-0.94.2
./configure --sysconfdir=/etc
make; make install
mkdir /var/lib/clamav
chown clamav:clamav /var/lib/clamav
ldconfig
/usr/local/bin/clamscan -r -l scan.txt
vi /etc/clamad.conf
#Example
LogFile /tmp/clamd.log
DatabaseDirectory /var/lib/clamav
User amavis
vi/etc/freshclam.conf
#Example
touch /var/log/clam-update.log
chmod 600 /var/log/clam-update.log
chown amavis /var/log/clam-update.log
/usr/local/bin/freshclam –datadir=/var/lib/clamav -l /var/log/clam-update.log
/usr/local/sbin/clamd
/usr/local/sbin/amavisd -u amavis debug
About this entry
You’re currently reading “How to: configure postfix on slackware,” an entry on hybris
- Published:
- Sunday, February 1st, 2009 at 01:21
- Author:
- nomad84
- Category:
- it
- Tags:
- amavisd-new, berkeley db, courier, cyrus sasl, linux, notes to self, postfix, slackware
2 Comments
Jump to comment form | comments rss | trackback uri