На firewall'е открываем 25 порт. На DNS-сервере прописываем 3 записи (A, PTR, MX) для почтовика. В файле /etc/resolv.conf почтовика указываем правильный домен и сервер имен.
MySQL сервер , Apache, php - должны быть установлены.
!!! Чтобы почтовик мог принимать почту для домена, необходим статический IP-адрес и зарегистрированое доменное имя !!!
cd /usr/ports/mail/postfix
make install clean
(выбираем mysql, sasl, dovecot2)
в /etc/rc.conf
MySQL сервер , Apache, php - должны быть установлены.
Postfix
!!! Чтобы почтовик мог принимать почту для домена, необходим статический IP-адрес и зарегистрированое доменное имя !!!
cd /usr/ports/mail/postfix
make install clean
(выбираем mysql, sasl, dovecot2)
в /etc/rc.conf
postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
в /etc/periodic.conf
daily_clean_hoststat_enable = "NO"
daily_status_mail_rejects_enable = "NO"
daily_status_include_submit_mailq = "NO"
daily_submit_queuerun = "NO"
конфиг. файл находится /usr/local/etc/postfix/main.cf
пример:
myhostname = mail.home.local
mydomain = home.local
mydestination = $mydomain (куда адресована почта, если используем виртуальные почтовые ящики эта инструкция не нужна !)
myorigin = $mydomain (добавляем домен к адресу отправителя или получателя)
mynetworks = 10.0.0.0/24 (сети из которых можно отсылать сообщения)
inet_interfaces = all (разрешаем подключение не только локальным клиентам)
smtpd_helo_required = yes (требовать указать имя хоста клиента)
Ограничения
#триггеры ограничений в порядке их отработки на передачу сообщений (для каждого этап)
1. smtpd_client_restrictions = (применяется к хосту клиента)
2 .smtpd_helo_restrictions = (к аргументу HELO/EHLO клиента)
3. smtpd_sender_restrictions = (к отправителю)
4. smtpd_recipient_restrictions = (к получателю)
5. smtpd_data_restrictions = (к содержимому письма)
(!Каждое последующее этапное ограничение влияет на предыдущее, т.е. например, ограничение smtpd_recipient_restrictions применяется к получателю, к отправителю, к HELO/EHLO и к клиенту)
Каждое этапное ограничение состоит из правил. Некоторые правила не имеют никакого смысла на определенных этапах. Правила выполняются последовательно друг за другом.
пример ограничения:
smtpd_recipient_restrictions =
reject_non_fqdn_sender (проверка на полное имя отправителя)
reject_non_fqdn_recipient (проверка на полное имя получателя)
reject_unknown_sender_domain (проверка на домен отправителя)
reject_unknown_recipient_domain (проверка на домен получателя)
permit_mynetworks (!выше для внутренней и внешней сети, ниже для внешней сети)
permit_sasl_authenticated (аутентификация)
reject_unauth_destination (не открытый сервер)
в /etc/periodic.conf
daily_clean_hoststat_enable = "NO"
daily_status_mail_rejects_enable = "NO"
daily_status_include_submit_mailq = "NO"
daily_submit_queuerun = "NO"
конфиг. файл находится /usr/local/etc/postfix/main.cf
пример:
myhostname = mail.home.local
mydomain = home.local
mydestination = $mydomain (куда адресована почта, если используем виртуальные почтовые ящики эта инструкция не нужна !)
myorigin = $mydomain (добавляем домен к адресу отправителя или получателя)
mynetworks = 10.0.0.0/24 (сети из которых можно отсылать сообщения)
inet_interfaces = all (разрешаем подключение не только локальным клиентам)
smtpd_helo_required = yes (требовать указать имя хоста клиента)
Ограничения
#триггеры ограничений в порядке их отработки на передачу сообщений (для каждого этап)
1. smtpd_client_restrictions = (применяется к хосту клиента)
2 .smtpd_helo_restrictions = (к аргументу HELO/EHLO клиента)
3. smtpd_sender_restrictions = (к отправителю)
4. smtpd_recipient_restrictions = (к получателю)
5. smtpd_data_restrictions = (к содержимому письма)
(!Каждое последующее этапное ограничение влияет на предыдущее, т.е. например, ограничение smtpd_recipient_restrictions применяется к получателю, к отправителю, к HELO/EHLO и к клиенту)
Каждое этапное ограничение состоит из правил. Некоторые правила не имеют никакого смысла на определенных этапах. Правила выполняются последовательно друг за другом.
пример ограничения:
smtpd_recipient_restrictions =
reject_non_fqdn_sender (проверка на полное имя отправителя)
reject_non_fqdn_recipient (проверка на полное имя получателя)
reject_unknown_sender_domain (проверка на домен отправителя)
reject_unknown_recipient_domain (проверка на домен получателя)
permit_mynetworks (!выше для внутренней и внешней сети, ниже для внешней сети)
permit_sasl_authenticated (аутентификация)
reject_non_fqdn_hostname (проверка на полное доменное имя клиента)
reject_invalid_hostname (требование к символам имя хоста клиента)
check_helo_access hash:/usr/local/etc/postfix/helos (карта проверки клиентов)
check_client_access hash:/usr/local/etc/postfix/clients
check_sender_access hash:/usr/local/etc/postfix/senders
check_recipient_access hash:/usr/local/etc/postfix/aссounts (карта проверки получателей)
reject_multi_recipient_bounce (отказать отправителю с пустым именем множественную рассылку)
permit
Разрешаем получателей
создаем в каталоге postfix файл accounts, добавляем пользователей
postmaster@ OK
abuse@ OK
hostmaster@ OK
webmaster@ OK
и т.д.
далее создаем карту (индексированную версию) accounts.db:
postmap hash:/usr/local/etc/postfix/aссounts
и добавляем правило в необходимое этапное ограничение:
...
check_recipient_access hash:/usr/local/etc/postfix/aссounts
...
Перенаправление почты.
создаем в каталоге postfix файл aliases, добавляем пользователей
root: admin
и т.д.
далее создаем индексированную версию - файл aliases.db:
postalias hash:/usr/local/etc/postfix/aliases
Проверка содержимого сообщений.
header_checks (проверка заголовка сообщения)
body_checks (проверка тела сообщения)
mime_header_checks (проверка mime-заголовков)
nested_header_checks (проверка не mime-заголовков)
пример:
Создаем файл карт header_checks.
Файл выглядит из строк вида
<шаблон(рег.выр)><действие(REJECT,IGNORE,WARN,HOLD,DISCARD,FILTER,REDIRECT)><текст>:
/^Subject:.*something/ WARN warning to something
/^To:.*another/ REJECT reject another
и т.д.
в файл конфигурации main.cf добавляем:
header_checks = regexp:/usr/local/etc/postfix/header_checks
Виртуальные пользователи
Чтобы не заводить системных пользователей для каждого нового email адреса, настроим postfix для работы с виртуальными пользователями, в /usr/local/etc/postfix/main.cf добавим
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/smtpd_banner = $myhostname ESMTP $mail_name
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_valias.cf
virtual_gid_maps = static:125
virtual_uid_maps = static:125 (узнаем командой id postfix)
virtual_minimum_uid = 125
virtual_mailbox_base = /var/mail
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_vdomains.cf
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_vbox.cf
virtual_transport = virtual
создаем файлы в каталоге /usr/local/etc/postfix/
mysql_valias.cf с таким содержимым
user = postfix (пользователь для подключения к mysql)
password = postfix (пароль)
hosts = 127.0.0.1 (где крутится mysql сервер)
dbname = postfix (база данных)
table = alias (таблица)
select_field = goto
where_field = address
mysql_vdomains.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
mysql_vbox.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
запускаем /usr/local/sbin/postfix start (reload)
почта находится в каталоге /var/mail
изменим права и владельца
chmod -R 777 /var/mail
chown postfix /var/mail
логи находятся в каталоге /var/log/maillog
Postfixadmin
cd /usr/ports/mail/postfixadminmake install clean
Ставится в каталог /usr/local/www/postfixadmin соответственно в виртуальные хосты апача добавляем алиас:
Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin/">
Options None
AllowOverride Limit
Require local (доступ к postfixadmin только с localhost)
</Directory>
для полного доступа в секции directory добавляем
Options None
Require all granted
Allow from all
далее выполняем setup (webserverip/postfixadmin/setup.php).
Внизу страницы вводим пароль для управления настройкой PostfixAdmin. Дальше генерируем хэш пароль. Далее создаем аккаунт суперадмина: вводим пароль (задавали ранее), почтовый ящик (логин) и пароль к доступу PostfixAdmin.
Далее выполняем вход в PosfixAdmin (webserverip/postfixadmin/login.php).
Также предварительно надо создать базу данных для postfix'а и пользователя для этой базы с полными правами. Далее в конфигурационном файле /usr/local/www/postfixadmin/config.inc.php изменить опции:
$CONF['configured'] = true;
$CONF['setup_password'] = ''; (сюда вводим сгенерированный хэш пароль)
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost'; (!!!хост с сервером mysql)
$CONF['database_user'] = 'user';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'base';
$CONF['database_prefix'] = '';
$CONF['admin_email'] = 'admin@home.local';
$CONF['smtp_server'] = 'localhost'; (имя почтового сервера, пр. mail.home.local)
$CONF['smtp_port'] = '25'; (порт)
$CONF['encrypt'] = 'md5crypt';
$CONF['transport_default'] = 'virtual';
Dovecot 2
Dovecot выполняет роль POP/IMAP почтового сервера. устанавливаем если не стоит:
cd /usr/ports/mail/dovecot2
make install clean
(выбираем mysql, ssl)
Конфигурационный файл /usr/local/etc/dovecot/dovecot.conf
простой пример:
base_dir = /var/run/dovecot/
protocols = imap pop3
listen = * (слушать на всех интерфейсах)
disable_plaintext_auth = no
ssl = no (отключаем ssl)
log_path = /var/log/dovecot.log (лог)
mail_location = maildir:/var/mail/%u (каталог с почтой)
shutdown_clients = yes
mail_uid = postfix
mail_gid = postfix
first_valid_uid = 125
last_valid_uid = 125
first_valid_gid = 125
last_valid_gid = 125
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
login_greeting = POP3/IMAP Server. (приветствие)
protocol imap {
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
postmaster_address = admin@home.local
}
auth_verbose = yes
auth_mechanisms = plain login
passdb {
args = /usr/local/etc/dovecot/dovecot-mysql.conf
driver = sql
}
userdb {
args = /usr/local/etc/dovecot/dovecot-mysql.conf
driver = sql
}
service auth {
unix_listener auth-master {
mode = 0660
}
unix_listener auth-client {
mode = 0660
user = postfix
group = postfix
}
}
dict {
}
plugin {
}
создаем файл /usr/locale/etc/dovecot/dovecot-mysql.conf (подключение к базе)
driver = mysql connect = host=localhost port=3306 dbname=postfix user=postfix password=postfix
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username='%u'
user_query = SELECT maildir, 125 AS uid, 125 AS gid FROM mailbox WHERE username='%u'
в /etc/rc.conf добавляемdovecot_enable="YES"
ClamAv (антивирус)
устанавливаемcd /usr/ports/security/clamav
make install clean
(выбираем ARC, ARJ, LHA, UNZOO)
конф. файл /usr/local/etc/clamd.conf
LogFile /var/log/clamav/clamd.log (логи)
LogClean yes
LogTime yes
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/db/clamav
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket yes
User clamav
AllowSupplementaryGroups yes
ScanPE yes
ScanOLE2 yes
ScanMail yes (проверяем почту)
ScanHTML yes
ScanArchive yes
конф. файл /usr/local/etc/freshclam.conf
DatabaseDirectory /var/db/clamav
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner clamav
AllowSupplementaryGroups yes
DatabaseMirror database.clamav.net
Checks 12
NotifyClamd /usr/local/etc/clamd.conf
в /etc/rc.conf добавляем
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
freshclam (обновляем)
/usr/local/etc/rc.d/clamav-clamd start (запускаем)
Спасибо за статью надеюсь она рабочая.
ОтветитьУдалитьПопробую отпишусь.
Хотелось бы увидеть ещё и настройку mysql, apache,php