Почтовый сервер в связке Postfix, Dovecot — различия между версиями
Root (обсуждение | вклад) |
Root (обсуждение | вклад) |
||
| Строка 644: | Строка 644: | ||
второй <code>/usr/local/etс/postfix/master.cf</code> | второй <code>/usr/local/etс/postfix/master.cf</code> | ||
| − | + | # ========================================================================== | |
| − | # ========================================================================== | + | # service type private unpriv chroot wakeup maxproc command + args |
| − | # service type private unpriv chroot wakeup maxproc command + args | + | # (yes) (yes) (yes) (never) (100) |
| − | # (yes) (yes) (yes) (never) (100) | + | # ========================================================================== |
| − | # ========================================================================== | + | smtpd pass - - n - - smtpd |
| − | smtpd pass - - n - - smtpd | + | smtp inet n - n - - smtpd |
| − | smtp inet n - n - - smtpd | + | #smtp inet n - n - 1 postscreen |
| − | #smtp inet n - n - 1 postscreen | + | #smtpd pass - - n - - smtpd |
| − | #smtpd pass - - n - - smtpd | + | #dnsblog unix - - n - 0 dnsblog |
| − | #dnsblog unix - - n - 0 dnsblog | + | #tlsproxy unix - - n - 0 tlsproxy |
| − | #tlsproxy unix - - n - 0 tlsproxy | + | #submission inet n - n - - smtpd |
| − | #submission inet n - n - - smtpd | + | # -o syslog_name=postfix/submission |
| − | # -o syslog_name=postfix/submission | + | # -o smtpd_tls_security_level=encrypt |
| − | # -o smtpd_tls_security_level=encrypt | + | # -o smtpd_sasl_auth_enable=yes |
| − | # -o smtpd_sasl_auth_enable=yes | + | # -o smtpd_reject_unlisted_recipient=no |
| − | # -o smtpd_reject_unlisted_recipient=no | + | # -o smtpd_client_restrictions=$mua_client_restrictions |
| − | # -o smtpd_client_restrictions=$mua_client_restrictions | + | # -o smtpd_helo_restrictions=$mua_helo_restrictions |
| − | # -o smtpd_helo_restrictions=$mua_helo_restrictions | + | # -o smtpd_sender_restrictions=$mua_sender_restrictions |
| − | # -o smtpd_sender_restrictions=$mua_sender_restrictions | + | # -o smtpd_recipient_restrictions= |
| − | # -o smtpd_recipient_restrictions= | + | # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject |
| − | # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject | + | # -o milter_macro_daemon_name=ORIGINATING |
| − | # -o milter_macro_daemon_name=ORIGINATING | + | pickup unix n - n 60 1 pickup |
| − | pickup unix n - n 60 1 pickup | + | cleanup unix n - n - 0 cleanup |
| − | cleanup unix n - n - 0 cleanup | + | qmgr unix n - n 300 1 qmgr |
| − | qmgr unix n - n 300 1 qmgr | + | tlsmgr unix - - n 1000? 1 tlsmgr |
| − | tlsmgr unix - - n 1000? 1 tlsmgr | + | rewrite unix - - n - - trivial-rewrite |
| − | rewrite unix - - n - - trivial-rewrite | + | bounce unix - - n - 0 bounce |
| − | bounce unix - - n - 0 bounce | + | defer unix - - n - 0 bounce |
| − | defer unix - - n - 0 bounce | + | trace unix - - n - 0 bounce |
| − | trace unix - - n - 0 bounce | + | verify unix - - n - 1 verify |
| − | verify unix - - n - 1 verify | + | flush unix n - n 1000? 0 flush |
| − | flush unix n - n 1000? 0 flush | + | proxymap unix - - n - - proxymap |
| − | proxymap unix - - n - - proxymap | + | proxywrite unix - - n - 1 proxymap |
| − | proxywrite unix - - n - 1 proxymap | + | smtp unix - - n - - smtp |
| − | smtp unix - - n - - smtp | + | relay unix - - n - - smtp |
| − | relay unix - - n - - smtp | + | # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 |
| − | # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 | + | showq unix n - n - - showq |
| − | showq unix n - n - - showq | + | error unix - - n - - error |
| − | error unix - - n - - error | + | retry unix - - n - - error |
| − | retry unix - - n - - error | + | discard unix - - n - - discard |
| − | discard unix - - n - - discard | + | local unix - n n - - local |
| − | local unix - n n - - local | + | virtual unix - n n - - virtual |
| − | virtual unix - n n - - virtual | + | lmtp unix - - n - - lmtp |
| − | lmtp unix - - n - - lmtp | + | anvil unix - - n - 1 anvil |
| − | anvil unix - - n - 1 anvil | + | scache unix - - n - 1 scache |
| − | scache unix - - n - 1 scache | + | # ==================================================================== |
| − | # ==================================================================== | + | # Interfaces to non-Postfix software. |
| − | # Interfaces to non-Postfix software. | + | # ==================================================================== |
| − | # ==================================================================== | + | maildrop unix - n n - - pipe |
| − | maildrop unix - n n - - pipe | + | flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} |
| − | + | # | |
| − | # | + | uucp unix - n n - - pipe |
| − | uucp unix - n n - - pipe | + | flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) |
| − | + | # | |
| − | # | + | #ifmail unix - n n - - pipe |
| − | #ifmail unix - n n - - pipe | + | # flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) |
| − | # flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) | + | #bsmtp unix - n n - - pipe |
| − | #bsmtp unix - n n - - pipe | + | # flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient |
| − | # flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient | + | #scalemail-backend unix - n n - 2 pipe |
| − | #scalemail-backend unix - n n - 2 pipe | + | # flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} |
| − | # flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} | + | #mailman unix - n n - - pipe |
| − | #mailman unix - n n - - pipe | + | # flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py |
| − | # flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py | + | # ${nexthop} ${user} |
| − | # ${nexthop} ${user} | + | # python-postfix-policyd-spf |
| − | # python-postfix-policyd-spf | + | #policyd-spf unix - n n - 0 spawn |
| − | #policyd-spf unix - n n - 0 spawn | + | # user=nobody argv=/usr/bin/python /usr/bin/policyd-spf |
| − | # user=nobody argv=/usr/bin/python /usr/bin/policyd-spf | + | #retry unix - - - - - error |
| − | #retry unix - - - - - error | + | # ==================================================================== |
| − | # ==================================================================== | + | |
| − | |||
Версия 17:55, 23 апреля 2015
При установке будем ориентироваться на этот мануал: http://dummyluck.com/page/pochtovyi_server_nastroika_opisanie
Настройку будем производить для сервера с одним доменом. Система FreeBSD 10.1
1. Подготовка.
прописываем хостнейм /etc/rc.conf
hostname="mail.megapuper.ru"
делаем изменения в хостах /etc/hosts
127.0.0.1 localhost 109.172.52.114 megapuper.ru 109.172.52.114 mail.megapuper.ru
создаём пользователя и группу vmail
# pw groupadd vmail -g 5000 # pw useradd vmail -g vmail -s /sbin/nologin -u 5000
сразу отключаем sendmail
/etc/rc.conf
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"
2. Ставим Nginx, MySQL, PHP, PHP-extension. Этот web-сервер будет использоваться для postfixadmin.
Здесь коротко, ибо уже тыщу раз ставилось)
Nginx cтавим из пакетов
# pkg install nginx
основной конфиг /usr/local/etc/nginx/nginx.conf
user www;
worker_processes 2;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
include /usr/local/etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
client_max_body_size 5m;
server_names_hash_bucket_size 64;
types_hash_max_size 2048;
types_hash_bucket_size 64;
include /usr/local/etc/nginx/conf/*.conf;
}
конфиг виртуального хоста /usr/local/etc/nginx/conf/postfix.conf
server {
listen 80;
server_name postfix.megapuper.ru;
root /usr/local/www/postfix;
index index.php index.html index.htm;
access_log /var/log/nginx/postfix.access.log;
error_log /var/log/nginx/postfix.error.log;
location / {
# try_files $uri $uri/ /index.php?$uri&$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:10000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
}
}
PHP и нужные PHP-extension тоже ставим из пакетов
# pkg install php55 # pkg install php55-* (пригодятся php55-ctype php55-dom php55-gd php55-hash php55-iconv php55-imap php55-json php55-mbstring php55-mcrypt php55-mysql php55-mysqli php55-session php55-xml)
конфиг php-fpm /usr/local/etc/php-fpm.conf
[global] error_log = /var/log/php/php-fpm.log pid = /var/run/php-fpm.pid log_level = notice include=/usr/local/etc/php/*.conf
конфиг для виртуального хоста /usr/local/etc/php/postfix.conf
[postfix] prefix = /usr/local/www/$pool listen = 127.0.0.1:10000 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0660 user = www group = www pm = dynamic pm.max_children = 4 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 pm.max_requests = 100 ;pm.status_path = /status/php-fpm/$pool request_terminate_timeout = 0 request_slowlog_timeout = 1m slowlog = /var/log/php/$pool.slow.log catch_workers_output = yes
MySQL тоже из пакетов
# pkg install mysql56-server
простенький конфиг /etc/my.cnf
[mysqld] bind-address=127.0.0.1
в конфигах. где используется подключение к базе указываем хост 127.0.0.1
После этого имеем готовый web-сервер можно переходить к установке postfixadmin
3. Установка PostfixAdmin
Скачиваем последнюю версию отсюда http://sourceforge.net/projects/postfixadmin/ и заливаем на web-сервер
создаём базу и даём права пользователю
> create database postfix character set utf8 collate utf8_general_ci; > grant all on postfix.* to postfix@127.0.0.1 identified by 'пароль';
Правим основной конфиг postfixadmin config.inc.php
Spoiler
Теперь заходим на http://postfixadmin/setup.php и видим, что запустилась установка
Если все условия установки выполнены, то в базе создадутся необходимые таблицы и будет предложено создать суперадмина.
В поле Setup password вводим пароль из config.inc.php: $CONF['setup_password'] = 'пароль_установки';
Заполняем остальные поля, и после нажатия кнопки Создать сгенерится хэш.
Этот хеш надо вставить в config.inc.php : $CONF['setup_password'] = 'хеш';
Повторяем процедуру заведения суперадмина используя пароль_установки
осле создания суперадмина временно оставляем postfixadmin(так как без postfix и dovecot ящики создаваться не будут)
6. Устанавливаем Postfix.
Postfix ставим из портов, т.к. пакет ставится без поддержки mysql
# cd /usr/ports/mail/postfix # make install clean [X] MYSQL, PCRE, SASL2, TLS CYRUS-SASL [X] MYSQL, CRAM, DIGEST, LOGIN, PLAIN
По окончании установки активируем postfix
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y
Заведём нужные aliases /etc/aliases
www: postmaster@megapuper.ru
Инициализируем базу алиасов
# newaliases
Рихтуем основные конфиги postfix
первый /usr/local/etс/postfix/main.cf
Spoiler
второй /usr/local/etс/postfix/master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtpd pass - - n - - smtpd
smtp inet n - n - - smtpd
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
#submission inet n - n - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
# ====================================================================
# Interfaces to non-Postfix software.
# ====================================================================
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
#ifmail unix - n n - - pipe
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#bsmtp unix - n n - - pipe
# flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
#scalemail-backend unix - n n - 2 pipe
# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
#mailman unix - n n - - pipe
# flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
# ${nexthop} ${user}
# python-postfix-policyd-spf
#policyd-spf unix - n n - 0 spawn
# user=nobody argv=/usr/bin/python /usr/bin/policyd-spf
#retry unix - - - - - error
# ====================================================================
7. Устанавливаем Dovecot.