Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
02:49, 05 января 2014

Установка Postfix на Fedora 19 x32

Установка Postfix+Dovecot+MySQL+Clamav+Postgrey на Fedora 15-16-17-18-19 x32

Входные данные

Домен:

point.local

Имя хоста почтового сервера:

mx.point.local

IP адрес почтового сервера:

192.168.1.2

IP адрес DNS сервера провайдера:

111.222.333.444

Краткое содержание:

1. Настройка сетевого адаптера

2. Установка MySQL и создание базы "mail"

3. Установка и настройка Postfix

4. Установка и настройка Dovecot

5. Установка Postgrey

6. Установка ClamAV

7. Установка PostfixAdmin и Apache

8. Настройка DNS сервера

9. Настройка PostfixAdmin

10. Установка и настройка RoundCube Web Mail

 

1. Настройка сетевого адаптера

Файлы настроек сетевых адаптеров у Fedora имеют имена:

- ifcfg-enp0s3, ifcfg-enp0s8

- ifcfg-p2p1, ifcfg-p7p1

- ifcfg-eth0, ifcfg-eth1

Файлы находятся в каталоге /etc/sysconfig/network-scripts/

# systemctl stop NetworkManager.service

# systemctl disable NetworkManager.service

# systemctl enable network.service

# systemctl start network.service

Файл /etc/sysconfig/network-scripts/ifcfg-enp0s3, дописываем или меняем сетевые реквизиты:

ONBOOT="yes"

BOOTPROTO="static"

IPADDR=192.168.1.2

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

 

# systemctl restart network.service

Файл /etc/resolv.conf , вписываем IP адрес DNS сервера провайдера:

# vi /etc/resolv.conf

nameserver 192.168.1.1

 

Проверяем, пингуем:

# ping google.kz

 

2. Установка MySQL и создание базы "mail"

# yum install mysql mysql-server mysql-devel -y

# systemctl enable mysqld.service

# systemctl start mysqld.service

Создаем почтовую базу -  "mail":

# mysql -u root -p

mysql>  Enter password: *****

mysql>  CREATE DATABASE mail;

mysql>  GRANT ALL PRIVILEGES ON mail.* TO 'postfix'@'localhost' IDENTIFIED BY 'password';

mysql>  quit

 

3. Установка и настройка Postfix

# yum install postfix pam  mod_ssl  openssl crypto-utils mc system-config-firewall-tui setuptool wget -y

# mv /etc/postfix/main.cf /etc/postfix/main.cf.original

Файл /etc/postfix/main.cf , вписываем, заменяем домен и имя хоста на свои:

 
  1. soft_bounce = no
  2. queue_directory = /var/spool/postfix
  3. daemon_directory = /usr/libexec/postfix
  4. mail_owner = postfix
  5. default_privs = nobody
  6. inet_interfaces = all
  7. myhostname = mx.point.local
  8. mydomain = point.local
  9. myorigin = $mydomain
  10. mydestination = $myhostname,localhost.$myhostname,localhost
  11. local_recipient_maps = proxy:unix:passwd.byname $alias_maps
  12. unknown_local_recipient_reject_code = 550
  13. mynetworks = 127.0.0.0/8
  14. relay_domains =
  15. alias_maps = hash:/etc/aliases
  16. alias_database = hash:/etc/aliases
  17. mail_spool_directory = /var/mail
  18. smtpd_banner = $myhostname ESMTP
  19. debug_peer_level = 2
  20. debug_peer_list = 127.0.0.1
  21. debugger_command =
  22. PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
  23. xxgdb $daemon_directory/$process_name $process_id & sleep 5
  24. sendmail_path = /usr/sbin/sendmail
  25. mailq_path = /usr/bin/mailq
  26. setgid_group = postdrop
  27. html_directory = no
  28. manpage_directory = /usr/local/man
  29. config_directory = /etc/postfix
 

Опять открываем /etc/postfix/main.cf , добавляем:

 
  1. virtual_mailbox_domains = mysql:$config_directory/sql/vdomains.cf
  2. virtual_mailbox_base = /var/vmail
  3. virtual_mailbox_maps = mysql:$config_directory/sql/vmailbox.cf
  4. virtual_alias_maps = mysql:$config_directory/sql/valias.cf
  5. virtual_minimum_uid = 1150
  6. virtual_uid_maps = static:1150
  7. virtual_gid_maps = static:12
  8. virtual_transport = dovecot
  9. dovecot_destination_recipient_limit = 1
  10. smtpd_sasl_auth_enable = yes
  11. smtpd_sasl_exceptions_networks = $mynetworks
  12. smtpd_sasl_security_options = noanonymous
  13. broken_sasl_auth_clients = yes
  14. smtpd_sasl_type = dovecot
  15. smtpd_sasl_path = /var/spool/postfix/private/dovecot-auth
 

Создаем учетную запись пользователя vmail:

# useradd -r -u 1150 -g mail -d /var/vmail -s /sbin/nologin -c Virtual vmail

Для корректной работы создаем каталоги:

# mkdir -p -v /var/vmail

# chmod 770 -R /var/vmail

# chown vmail:mail /var/vmail

 

Отключаем SELINUX, открываем /etc/selinux/config и меняем:

Находим строку

SELINUX=enforcing

Приводим ее к виду

SELINUX=disabled

# setenforce 0

Ставим по умолчанию postfix :

# alternatives --config mta

Нажимаем цифру - 2

ENTER

There are 2 programs which provide 'mta'.

Selection    Command

-----------------------------------------------

*+ 1           /usr/sbin/sendmail.sendmail

2           /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 2

# systemctl disable sendmail.service

# systemctl stop sendmail.service

 

Запрещаем Postfix быть открытым релеем, открываем /etc/postfix/main.cf, дописываем:

 
  1. smtpd_recipient_restrictions = permit_mynetworks,
  2. permit_sasl_authenticated,
  3. reject_unauth_destination,

Создаем файлы для обращения к БД:

# mkdir /etc/postfix/sql

Создаем файл /etc/postfix/sql/vdomains.cf :

 
  1. user = postfix
  2. password = password
  3. hosts = localhost
  4. dbname = mail
  5. table = domain
  6. select_field = domain
  7. where_field = domain
  8. additional_conditions = and backupmx = '0' and active = '1'
  9. #query = SELECT domain FROM domain WHERE domain='%s' AND backupmx='0' AND active='1'
 

Создаем файл /etc/postfix/sql/vmailbox.cf :

 
  1. user = postfix
  2. password = password
  3. hosts = localhost
  4. dbname = mail
  5. table = mailbox
  6. select_field = CONCAT(domain,'/',maildir)
  7. where_field = username
  8. additional_conditions = and active = '1'
  9. #query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s'AND active = '1'
 

Создаем файл /etc/postfix/sql/valias.cf :

 
  1. user = postfix
  2. password = password
  3. hosts = localhost
  4. dbname     = mail
  5. table = alias
  6. select_field = goto
  7. where_field = address
  8. additional_conditions = and active = '1'
  9. #query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

4. Установка и настройка Dovecot

# yum install dovecot dovecot-mysql -y

Открываем /etc/postfix/master.cf и добавляем:

 
  1. dovecot    unix    -    n    n    -    -    pipe
  2. flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d $(recipient)
 

Открываем /etc/postfix/main.cf и добавляем:

 
  1. reject_non_fqdn_recipient,
  2. reject_unverified_recipient,
  3. reject_rbl_client cbl.abuseat.org,
  4. reject_rbl_client dialups.mail-abuse.org,
  5. permit
 

Создаем файл /etc/dovecot/dovecot.conf, вставим туда следующие настройки:

 
  1. # 2.0.9: /etc/dovecot/dovecot.conf
  2. # OS: Linux 2.6.32-220.7.1.el6.i686 i686 CentOS release 6.2 (Final) ext4
  3. auth_debug = yes
  4. auth_debug_passwords = yes
  5. auth_mechanisms = plain login cram-md5
  6. auth_verbose = yes
  7. base_dir = /var/run/dovecot/
  8. disable_plaintext_auth = no
  9. ssl = no
  10. first_valid_uid = 1150
  11. last_valid_uid = 1150
  12. log_timestamp = %Y-%m-%d %H:%M:%S
  13. mail_debug = yes
  14. mail_location = maildir:/var/vmail/%d/%u
  15. passdb {
  16. args = /etc/dovecot/dovecot-sql.conf
  17. driver = sql
  18. }
  19. protocols = imap pop3
  20. service auth {
  21. unix_listener /var/spool/postfix/private/dovecot-auth {
  22. user = postfix
  23. group = postfix
  24. mode = 0660
  25. }
  26. unix_listener auth-master {
  27. user = vmail
  28. group = mail
  29. mode = 0660
  30. }
  31. unix_listener auth-userdb {
  32. user = vmail
  33. group = mail
  34. mode = 0660
  35. }
  36. #user=root
  37. }
  38. service imap-login {
  39. executable = /usr/libexec/dovecot/imap-login
  40. inet_listener imap {
  41. address = *
  42. port = 143
  43. }
  44. }
  45. service imap {
  46. executable = /usr/libexec/dovecot/imap
  47. }
  48. service pop3-login {
  49. executable = /usr/libexec/dovecot/pop3-login
  50. inet_listener pop3 {
  51. address = *
  52. port = 110
  53. }
  54. }
  55. service pop3 {
  56. executable = /usr/libexec/dovecot/pop3
  57. }
  58. userdb {
  59. args = /etc/dovecot/dovecot-sql.conf
  60. driver = sql
  61. }
  62. protocol lda {
  63. auth_socket_path = /var/run/dovecot/auth-master
  64. postmaster_address = admin@point.local
  65. }
 

Теперь создайте файл /etc/dovecot/dovecot-sql.conf

 
  1. driver = mysql
  2. connect = host=localhost dbname=mail user=postfix password=password
  3. default_pass_scheme = CRAM-MD5
  4. user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n'as mail, 1150 AS uid, 12 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
  5. password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
 

5. Установка Postgrey

# yum install postgrey -y

Открываем файл /etc/postfix/main.cf , и добавляем check_policy_service unix:/var/spool/postfix/postgrey/socket после reject_unauth_destination :

 
  1. smtpd_recipient_restrictions = permit_mynetworks,
  2. permit_sasl_authenticated,
  3. reject_unauth_destination,
  4. check_policy_service unix:/var/spool/postfix/postgrey/socket,
  5. reject_non_fqdn_recipient,
  6. reject_unverified_recipient,
  7. reject_rbl_client cbl.abuseat.org,
  8. reject_rbl_client dialups.mail-abuse.org,
  9. permit
 

6. Установка ClamAV

# yum install clamav clamav-server clamsmtp clamav-update clamav-scanner –y

Открываем /etc/freshclam.conf и комментируем строку 8

#Строка номер 8: закоментировать

 
  1. Example
 

Обновляем базы:

# freshclam -v

Устанавливаем автообновление баз:

# freshclam -d

 

Открываем /etc/clamsmtpd.conf и вставляем:

 
  1. OutAddress: 10026
  2. TimeOut: 180
  3. KeepAlives: 0
  4. XClient: on
  5. Listen: 127.0.0.1:10025
  6. ClamAddress: /run/clamd.clamsmtp/socket
  7. Header: X-Virus-Scanned: ClamAV using ClamSMTP
  8. TempDirectory: /var/lib/clamd.clamsmtp
  9. Action: drop
  10. Quarantine: on
  11. User: clamsmtp
 

# chown clamsmtp:mail -R /var/run/clamd.clamsmtp/

Добавляем в /etc/postfix/main.cf строчки:

 
  1. content_filter = scan:127.0.0.1:10025
  2. receive_override_options = no_address_mappings
 

Добавляем в /etc/postfix/master.cf строчку:

 
  1. scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes
 

Добавляем в /etc/postfix/master.cf :

 
  1. 127.0.0.1:10026 inet n - n - 16 smtpd
  2. -o content_filter=
  3. -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  4. -o smtpd_helo_restrictions=
  5. -o smtpd_client_restrictions=
  6. -o smtpd_sender_restrictions=
  7. -o smtpd_recipient_restrictions=permit_mynetworks,reject
  8. -o mynetworks_style=host
  9. -o smtpd_authorized_xforward_hosts=127.0.0.0/8

7. Установка PostfixAdmin и Apache

Установим зависимости для Postfixadmin:

# yum -y install httpd php php-imap php-mbstring php-common php-pdo php-mysql php-cli

Скачаем Postfixadmin и настроим его:

# cd /var/www/html

# wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.3.6/postfixadmin-2.3.6.tar.gz/download

# mv download postadmin.tar.gz

# tar -xvzf postadmin.tar.gz

# mv postfixadmin-2.3.6/ postfixadmin

# cd  postfixadmin

Открываем /var/www/html/postfixadmin/config.inc.php , в этом файле находим строчки которые внизу и меняем их значение на следующие:

 
  1. $CONF['configured'] = true;
  2. $CONF['database_type'] = 'mysql';
  3. $CONF['database_host'] = 'localhost';
  4. $CONF['database_user'] = 'postfix';
  5. $CONF['database_password'] = 'password';
  6. $CONF['database_name'] = 'mail';
  7. $CONF['encrypt'] = 'dovecot:CRAM-MD5';
  8. $CONF['dovecotpw'] = "/usr/bin/doveadm pw";
 

Ставим все службы в автозагрузку:

# systemctl enable dovecot.service

# systemctl enable postfix.service

# systemctl enable httpd.service

# systemctl enable postgrey.service

# systemctl enable clamd@scan.service

# systemctl enable clamsmtp-clamd.service

 

8. Настройка DNS сервера

Открываем файл /etc/resolv.conf и приводим к виду:

 
  1. search point.local
  2. nameserver 127.0.0.1
  3. nameserver 192.168.1.2     //Первичный DNS
  4. nameserver 111.222.333.444     //Вторичный DNS
 

После наших изменений в файле - /etc/resolv.conf, данные о зоне "point.local" будут браться из нашего DNS сервера с IP адресом 192.168.1.2. Другие запросы будут разрешатся через DNS сервер провайдера.

 

Установим пакет Bind:

# yum install bind -y

Впишем имя хоста в /etc/sysconfig/network :

  1. NETWORKING=yes
  2. NETWORKING_IPV6=no
  3. HOSTNAME=mx.point.local
 

А также впишем имя хоста в /etc/hosts :

  1. 192.168.1.2 mx.point.local mx
 

Еще раз проверяем файл /etc/resolv.conf

  1. search point.local
  2. nameserver 127.0.0.1
  3. nameserver 192.168.1.2
  4. nameserver 111.222.333.444
 

Здесь IP адреса:

192.168.1.2 - наш DNS сервер

111.222.333.444 - IP адрес DNS сервера провайдера

Открываем /etc/named.conf и вставляем:

  1. //
  2. // named.conf
  3. //
  4. // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
  5. // server as a caching only nameserver (as a localhost DNS resolver only).
  6. //
  7. // See /usr/share/doc/bind*/sample/ for example named configuration files.
  8. //
  9. options {
  10. listen-on port 53 { 127.0.0.1; 192.168.1.2; }; # ставим внешний IP интерфейса
  11. directory       "/var/named";
  12. dump-file "/var/named/data/cache_dump.db";
  13. statistics-file "/var/named/data/named_stats.txt";
  14. memstatistics-file "/var/named/data/named_mem_stats.txt";
  15. allow-query { any; }; # меняем, даем обращатся всем
  16. allow-query-cache { localhost; 10.0.0.0/24; }; # меняем, добавляем локальную сеть если она есть
  17. allow-recursion { localhost; 10.0.0.0/24;}; # меняем, добавляем локальную сеть если она есть
  18. forwarders { 111.222.333.444; 444.555.666.777; }; # добавляем, ip dns провайдера
  19. dnssec-enable no;
  20. dnssec-validation no;
  21. dnssec-lookaside auto;
  22. /* Path to ISC DLV key */
  23. bindkeys-file "/etc/named.iscdlv.key";
  24. };
  25. logging {
  26. channel default_debug {
  27. file "data/named.run";
  28. severity dynamic;
  29. };
  30. };
  31. zone "." IN {
  32. type hint;
  33. file "named.ca";
  34. };
  35. # Зона прямого просмотра "point.local"
  36. zone "point.local" {
  37. type master;
  38. file "point.local.fwd";
  39. allow-update {none;};
  40. allow-transfer {192.168.1.10; }; //вторичный DNS
  41. };
  42. # Наша обратная зона просмотра "point.local"
  43. zone "1.168.192.in-addr.arpa" {
  44. type master;
  45. file "point.local.rev";
  46. allow-update {none;};
  47. allow-transfer {192.168.1.10; };
  48. };
  49. include "/etc/named.rfc1912.zones";
 

Создаем /var/named/point.local.fwd и вписываем:

  1. $ORIGIN point.local.
  2. $TTL 3D
  3. @       SOA                     mx.point.local.     root.point.local. (12 4h 1h 1w 1h)
  4. @       IN      NS              mx.point.local.
  5. @       IN      MX      10      mail.point.local.
  6. mx.point.local.         IN      A    192.168.1.2
  7. www     IN                      A    192.168.1.2
  8. mail IN                      A    192.168.1.2
 

Создаем /var/named/point.local.rev и вписываем:

  1. $ORIGIN 1.168.192.in-addr.arpa.
  2. $TTL 3D
  3. @    SOA           mx.point.local.    root.point.local. (12 4h 1h 1w 1h)
  4. @    IN            NS      mx.point.local.
  5. 2    IN            PTR     mx.point.local.
 

# systemctl enable named.service

# systemctl start named.service

 

Проверка работы DNS:

# nslookup mx.point.local

# nslookup 192.168.1.2

# nslookup -type=MX point.local

# hostname -f

mx.point.local

# reboot

 

9. Настройка PostfixAdmin

В браузере ввести адрес http://127.0.0.1/postfixadmin/setup.php

или

http://IP почтового сервера/postfixadmin/setup.php

 

В окошке "Change setup password" - забиваем свой пароль, записываем его на бумажку.

 

Во втором окошке появится длинная красная непонятная строчка (наш шифрованный пароль), копируем ее в буфер обмена.

Открываем /var/www/html/postfixadmin/config.inc.php , находим строчку

$CONF['setup_password'] = 'changeme';

Меняем, вместо  "changeme", вставляем шифрованный пароль который скопировали в буфер обмена. Вот что должно получится:

$CONF['setup_password'] = '6c5af4c72af213f0acac5f21d8f95ca1:e59172283d2bb72a5992af8ddc15332cde62f003';

 

Заходим http://127.0.0.1/postfixadmin/setup.php или http://IP сервера/postfixadmin/setup.php

 

Создаем учетную запись администратора, например "administrator@point.local".

Нажимаем на кнопке "Add Admin", появится надпись:

Admin has been added!

(administrator@point.local)

Запоминаем адрес (логин) и пароль.

Заходим на страничку http://127.0.0.1/postfixadmin/ или http://IP сервера/postfixadmin/

Вводим адрес administrator@point.local и пароль.

Добавляем домен point.local :

Заходим в меню -> Domain List - > New Domain -> point.local

  • Aliases - Ставим 0
  • Mailboxes - Ставим 0
  • Add default mail aliases - Галочка

Нажимаем ОК.

Появится надпись:

Domain has been added!

(point.local)

Создадим первый почтовый ящик, я создал "linux@point.local".

Меню Virtual List -> Add MailBox ->

  • Username - linux
  • Password - 123 (sample)
 

Пришло время тестировать наш почтовый сервер.

 

В локальной сети находим свободный компьютер, настраиваем сетевые настройки так чтобы этот ПК видел почтовый сервер.

Настраиваем почтовый клиент Outlook или другой, указываем

  • SMTP/POP3 server:                        point.local
  • Учетная запись (Account name):   linux@point.local
  • Пароль (password):                      123
 

Ставим галку - SMTP авторизация.

Отправляем себе письмо на linux@point.local

 

10. Установка и настройка RoundCube Web Mail

# yum install php php-xml php-mcrypt php-intl php-sqlite php-pgsql

# cd /var/www/html

# wgethttp://sourceforge.net/projects/roundcubemail/files/roundcubemail/0.9.4/roundcubemail-0.9.4.tar.gz/download

# tar xvfz roundcubemail-0.9.4.tar.gz

# mv roundcubemail-0.9.4 roundcube

Cоздаем файл roundcube.conf:

# vi /etc/httpd/conf.d/roundcube.conf

Вписываем следующее:

  1. Alias /webmail /var/www/html/roundcube
  2. <Directory /var/www/html/roundcube>
  3. AddType application/x-httpd-php .php .php3 .php4 .phtml
  4. # forcing open_base dir do not affect anything
  5. php_admin_value open_basedir /
  6. # AddDefaultCharset UTF-8
  7. AddType text/x-component .htc
  8. <IfModule mod_php4.c>
  9. php_flag display_errors Off
  10. php_flag log_errors On
  11. php_value error_log logs/errors
  12. php_value upload_max_filesize 5M
  13. php_value post_max_size 6M
  14. php_value memory_limit 64M
  15. </IfModule>
  16. <IfModule mod_php5.c>
  17. php_flag display_errors Off
  18. php_flag log_errors On
  19. php_value error_log logs/errors
  20. php_value upload_max_filesize 5M
  21. php_value post_max_size 6M
  22. php_value memory_limit 64M
  23. </IfModule>
  24. <FilesMatch "(\.inc|\~)$">
  25. Order allow,deny
  26. Deny from all
  27. </FilesMatch>
  28. Order deny,allow
  29. Allow from all
  30. </Directory>
 

Cоздаем базу данных и пользователя:

# mysqladmin -p create roundcubemail

# mysql -p

mysql> GRANT ALL ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password';

mysql> quit

# service httpd restart

# chown apache:apache -R /var/www/html/roundcube/temp

# chown apache:apache -R /var/www/html/roundcube/logs

Ставим свой часовой пояс:

# vi /etc/php.ini

date.timezone = Asia/Almaty

или

date.timezone = Europe/Moscow

 

Идем по адресу http://127.0.0.1/roundcube/installer/ или http://IP сервера/roundcube/installer/]. Оставляем все по умолчанию, не меняя никаких настроек, кроме двух полей,  где нужно указать название базы данных и пароль. В нашем случае  название базы будет "roundcubemail", а пароль указанный ранее 'password'.

Не забываем включить опцию 'htmleditor' в 'always'.

По окончании настройки веб интерфейса, Вам будет предложено скачать и сохранить два конфигурационных файла:

1. db.inc.php

2. main.inc.php

Эти два файла требуется переместить в папку:

/var/www/html/roundcube/config/

 

Открываем /var/www/html/roundcube/config/main.inc.php

# vi /var/www/html/roundcube/config/main.inc.php

$rcmail_config['imap_auth_type'] = cram-md5;

Если пароль к базе Roundcube был введен с ошибкой, его можно сменить в файле

# vi /var/www/html/roundcube/config/db.inc.php

$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcubemail';

Здесь:

roundcube - имя пользователя базы roundcubemail

password - пароль доступа к базе

roundcubemail - сама база веб Интерфейса RoundCube

 

Заходим в веб интерфейс, вводим в браузере адрес:

http://point.local/webmail

или

http://point.local/roundcube

Вводим в окошке:

логин: administrator@point.local

пароль: 123456

сервер: point.local или IP

 
0
790
0