Почтовый сервер в связке Postfix, Dovecot — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
Строка 554: Строка 554:
  
 
Теперь заходим на http://postfixadmin/setup.php и видим, что запустилась установка<br/>
 
Теперь заходим на http://postfixadmin/setup.php и видим, что запустилась установка<br/>
Если все условия установки выполнены, то в базе создадутся все необходимые таблицы и будет предложено создать суперадмина.
+
Если все условия установки выполнены, то в базе создадутся необходимые таблицы и будет предложено создать суперадмина.
  
 
В поле ''Setup password'' вводим пароль из config.inc.php: $CONF['setup_password'] = 'пароль_установки';<br/>
 
В поле ''Setup password'' вводим пароль из config.inc.php: $CONF['setup_password'] = 'пароль_установки';<br/>
Заполняем остальные поля, и после нажатия кнопки ''Создать'' сгенерится хэш_пароля.
+
Заполняем остальные поля, и после нажатия кнопки ''Создать'' сгенерится хэш.
  
 
Этот хеш надо вставить в config.inc.php : $CONF['setup_password'] = 'хеш';<br/>
 
Этот хеш надо вставить в config.inc.php : $CONF['setup_password'] = 'хеш';<br/>
 
Повторяем процедуру заведения суперадмина используя пароль_установки
 
Повторяем процедуру заведения суперадмина используя пароль_установки
  
После создания суперадмина временно оставляем postfixadmin(так как без postfix и dovecot ящики создаваться не будут)
+
осле создания суперадмина временно оставляем postfixadmin(так как без postfix и dovecot ящики создаваться не будут)
  
  
 
'''6. Устанавливаем Postfix.'''
 
'''6. Устанавливаем Postfix.'''
 +
 +
Postfix ставим из портов, т.к. пакет ставится без поддержки mysql<br/>
 +
# 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 <code>/etc/aliases</code>
 +
www:    postmaster@megapuper.ru
 +
 +
Инициализируем базу алиасов
 +
# newaliases
 +
 +
 +
Рихтуем основные конфиги postfix<br/>
 +
первый <code>/usr/local/etс/postfix/main.cf</code>
 +
<spoiler>
 +
biff=no
 +
smtpd_banner = $myhostname ESMTP
 +
queue_directory = /var/spool/postfix
 +
command_directory = /usr/local/sbin
 +
daemon_directory = /usr/local/libexec/postfix
 +
data_directory = /var/db/postfix
 +
 +
mail_owner = postfix
 +
append_dot_mydomain = no
 +
recipient_delimiter = +
 +
default_destination_recipient_limit = 1
 +
mailbox_size_limit = 1024000000
 +
message_size_limit = 20480000
 +
queue_directory = /var/spool/postfix
 +
 +
inet_protocols = ipv4
 +
inet_interfaces = all
 +
 +
myhostname = mail.megapuper.ru
 +
mydomain = megapuper.ru
 +
myorigin = $mydomain
 +
mydestination = localhost.$mydomain, localhost
 +
mynetworks = 127.0.0.0/8, 192.168.0.0/24
 +
 +
alias_maps = hash:/etc/aliases
 +
alias_database = hash:/etc/aliases
 +
smtp_generic_maps = hash:/usr/local/etc/postfix/aliases_smtp_output
 +
lmtp_generic_maps = hash:/usr/local/etc/postfix/aliases_lmtp
 +
sender_bcc_maps = mysql:/usr/local/etc/postfix/mysql_bcc_mailbox_maps.cf, mysql:/usr/local/etc/postfix/mysql_bcc_domain_maps.cf
 +
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains.cf
 +
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_maps.cf
 +
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_domain_maps.cf,mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
 +
 +
virtual_transport = lmtp:unix:private/dovecot-lmtp
 +
 +
strict_rfc821_envelopes = yes
 +
 +
mail_spool_directory = /var/spool/mail
 +
 +
smtpd_helo_required = yes
 +
 +
delay_notice_recipient = postmaster@megapuper.ru
 +
bounce_notice_recipient = postmaster@megapuper.ru
 +
2bounce_notice_recipient = postmaster@megapuper.ru
 +
error_notice_recipient = postmaster@megapuper.ru
 +
 +
debug_peer_level = 2
 +
debugger_command =
 +
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
 +
ddd $daemon_directory/$process_name $process_id & sleep 5
 +
 +
sendmail_path = /usr/local/sbin/sendmail
 +
newaliases_path = /usr/local/bin/newaliases
 +
mailq_path = /usr/local/bin/mailq
 +
 +
setgid_group = maildrop
 +
sample_directory = /usr/local/etc/postfix
 +
</spoiler>
 +
 +
второй <code>/usr/local/etс/postfix/master.cf</code>
 +
<spoiler>
 +
# ==========================================================================
 +
# 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
 +
# ====================================================================
 +
</spoiler>
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
 
'''7. Устанавливаем Dovecot.'''
 
'''7. Устанавливаем Dovecot.'''

Версия 15:05, 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 Spoiler















7. Устанавливаем Dovecot.