Настроика сервера электронной почты.
Вспомогательные пакеты:
mysql
cirus-sasl
postfix-admin
apache+php
Установка Mysql
предварительно установим setenv WITH_OPENSSL yes
make install clean
/usr/local/bin/mysqlsecureinstallation
Установим openssl
cd /usr/ports/security/openssl
Установим Cirus-sasl2
cd /usr/ports/security/cyrus-sasl2
make install clean
добавляем при сборке опцию mysql
Для аутентификации курьер imap устанвливаем courier-authlib
cd /usr/ports/security/courier-authlib
make install clean
добавим поддержку mysql
courierauthdaemondenable=«YES»
Отредактируем конфигурационные файлы
ee /usr/local/etc/authlib/authdaemonrc
authmodulelist=«authmysql»
authmodulelistorig=«authmysql»
DEBUG_LOGIN=2
ee /usr/local/etc/authlib/authmysqlrc
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_SERVER localhost
MYSQL_PORT 3306
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_DATABASE postfix
MYSQLCHARACTERSET utf8
MYSQLUSERTABLE mailbox
MYSQLCLEARPWFIELD password
MYSQLUIDFIELD '5555'
MYSQLGIDFIELD '5555'
MYSQLLOGINFIELD username
MYSQLHOMEFIELD '/var/spool/mail/virtual'
MYSQLNAMEFIELD name
MYSQLQUOTAFIELD quota
MYSQLWHERECLAUSE active='1'
MYSQL_PORT 3306
Стартуем сервер: /usr/ports/security/courier-authlib # /usr/local/etc/rc.d/courier-authdaemond start
Установим Courier-imap
cd /usr/ports/mail/courier-imap/
добавляем transhquota, auth_mysql
Отредактрируем конфиг
POP3AUTH=«PLAIN LOGIN CRAM-MD5»
POP3AUTH_ORIG=«PLAIN LOGIN CRAM-MD5»
POP3AUTH_TLS=«PLAIN LOGIN CRAM-MD5»
POP3AUTHTLSORIG=«LOGIN PLAIN CRAM-MD5»
LOGGEROPTS=«-name=courier-imap»
POP3DSTART=YES
Стартуем не забудем добавить courierimappop3d_enable=«YES»
/usr/local/etc/rc.d/courier-imap-pop3d start
Установка Postfix
Поставим значение опций
ee /etc/defaults/periodic.conf
dailycleanhoststat_enable=«NO»
dailystatusmailrejectsenable=«NO»
dailystatusincludesubmitmailq=«NO»
dailysubmitqueuerun=«NO»
непосредственно установка
cd /usr/ports/mail/postfix
make install clean
опции
pcre, sasl2, tls, mysql, vda
отредактируем файл main.cf
mail_owner = postfix
myhostname = mx.mkm.local
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8
smtpdetrnrestrictions = reject
smtpdrejectunlisted_sender = yes
disablevrfycommand = yes
smtpdsaslauth_enable = yes
brokensaslauth_clients = yes
smtpdsaslsecurity_options = noanonymous
smtpdsenderlogin_maps = mysql:$base/mysqlLookupMaps/sender.conf
virtualaliasmaps = mysql:$base/mysqlLookupMaps/alias.conf
virtualmailboxdomains = mysql:$base/mysqlLookupMaps/domain.conf
virtualmailboxmaps = mysql:$base/mysqlLookupMaps/mailbox.conf
virtualmailboxbase = /var/spool/mail/virtual
virtualmailboxlimit_maps = mysql:$base/mysqlLookupMaps/quota.conf
virtualmaildirextended = yes
virtualmailboxlimit_override = yes
virtualcreatemaildirsize = yes
virtualoverquitabounce = yes
virtualmaildirlimit_message = «Mailbox is full!!!»
messagesizelimit = 10485760
virtualgidmaps = static:5555
virtualuidmaps = static:5555
ee /usr/local/lib/sasl2/ee /usr/local/lib/sasl2/smtpd.conf
pwcheckmethod: auxprop
loglevel: 3
mechlist: PLAIN LOGIN CRAM-MD5
auxpropplugin: sql
sqlusessl: yes
sqlengine: mysql
sqlhostnames: localhost
sqluser: postfix
sqlpasswd: postfix
sqldatabase: postfix
sql_select: select password from mailbox where username = '%u@%r'
cd /usr/local/etc/postfix/
mkdir mysqlLookupMaps
touch hello_access
touch client_access
touch sender_access
touch recipient_access
postmap hello_access
postmap sender_access
postmap recipient_access
postmap client_access
cd mysqlLookupMaps/
touch alias.conf touch domain.conf touch mailbox.conf touch quota.conf touch sender.conf
ee alias.conf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
ee domain.conf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1' and backupmx = '0'
ee mailbox.conf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = mailbox
where_field = username
additional_conditions = and active = '1'
ee quota.conf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active = '1'
ee sender.conf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = username
where_field = username
additional_conditions = and active = '1'