Меню Рубрики

Установка postfix для fedora

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

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

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

mx.point.local

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

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

111.222.333.444

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

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

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

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

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

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

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

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

Файлы находятся в каталоге /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, дописываем или меняем сетевые реквизиты:

# systemctl restart network.service

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

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

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

# systemctl enable mysqld.service

# systemctl start mysqld.service

Создаем почтовую базу — «mail»:

mysql> CREATE DATABASE mail;

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

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_ >Опять открываем /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_u >Создаем учетную запись пользователя vmail:

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

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

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

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

There are 2 programs which provide ‘mta’.

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,

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

Создаем файл /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_val >Теперь создайте файл /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 u

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

Открываем файл /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: закоментировать

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

Открываем /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_overr >Добавляем в /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_overr >7. Установка PostfixAdmin и Apache

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

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

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

# mv download postadmin.tar.gz

# mv postfixadmin-2.3.6/ 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

Открываем файл /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 сервер провайдера.

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

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

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

Еще раз проверяем файл /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

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 ;
  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 ;
  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

# nslookup -type=MX point.local

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 , находим строчку

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

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

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

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

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

Заходим на страничку 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 — Галочка

Создадим первый почтовый ящик, я создал «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

# tar xvfz roundcubemail-0.9.4.tar.gz

# mv roundcubemail-0.9.4 roundcube

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

  1. Alias /webmail /var/www/html/roundcube
  2. AddType application/x-httpd-php .php .php3 .php4 .phtml
  3. # forcing open_base dir do not affect anything
  4. php_admin_value open_basedir /
  5. # AddDefaultCharset UTF-8
  6. AddType text/x-component .htc
  7. php_flag display_errors Off
  8. php_flag log_errors On
  9. php_value error_log logs/errors
  10. php_value upload_max_filesize 5M
  11. php_value post_max_size 6M
  12. php_value memory_limit 64M
  13. php_flag display_errors Off
  14. php_flag log_errors On
  15. php_value error_log logs/errors
  16. php_value upload_max_filesize 5M
  17. php_value post_max_size 6M
  18. php_value memory_limit 64M
  19. Order allow,deny
  20. Deny from all
  21. Order deny,allow
  22. Allow from all

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

# mysqladmin -p create roundcubemail

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

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

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

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

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

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

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

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

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

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

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

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

источник

AccessD Lab

понедельник, 29 июня 2009 г.

Установка и настройка почтового сервера Postfix + Cyrus-imapd в Fedora

Итак, хочу наконец собрать всё в одну кучу.
Платформа — Fedora 11.
Обслуживаем вирт.домены, раздаём почту по POP3, IMAP, HTTP.

1. Поставить Postfix, Сyrus-sasl, Сyrus-imapd

2. Подготовка:
Создать каталог для почты /var/mail/vhosts / домен
Создать пользователя и группу virtual, uid/gid 5000, сделать владельцем /var/mail/vhosts/

# mkdir /etc/mail/vhosts
# mkdir /etc/mail/vhosts/ домен
# groupadd -r virtual -g 5000
# useradd -r -M virtual -u 5000 -g 5000
# chown -R virtual:virtual /var/mail/vhosts/

3 . Настроить виртуальный домен:
Прописать вирт.домен в /etc/postfix/main.cf :

#Virtual domain
virtual_mailbox_domains = домен
virtual_mailbox_base = /var/mail/vhosts
# файл с адресами
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_u > # пользователь virtual, от которого доставляется почта
virtual_u > virtual_g > # файл с алиасами
virtual_alias_maps = hash:/etc/postfix/virtual

Внимание! Виртуальный домен не может быть указан в mydestination.

4. Настроить Cyrus-imapd:
добавить в /etc/imapd.conf

allowplaintext: 1
# sasl пользователь-админ
admins: cyrusadmin
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sasldb
sasl_sasldb_path: /etc/sasldb2
virtdomains: userid
# обслуживаемый виртуальный домен
loginrealms: домен

Прописать транспорт в /etc/postfix/main.cf :

# передача писем сайрусу
virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp

5. Настроить SASL:
В /usr/lib/sasl2/smtpd.conf вписать:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login cram-md5

(этим мы сказали, что используем плагин, смотрящий в базу /etc/sasldb2)

Прописать настройки SASL в /etc/postfix/main.cf:

#SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous

#Restrictions
# Это начальные разграничения, потом усилим
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

6. Создать ящики и SASL пользователей вирт.домена:
Ящики и алиасы (в т.ч. для создания групп):
в файле /etc/postfix/vmailbox указать ящики в формате

в файле /etc/postfix/virtual указать алиасы в формате

SASL пользователи и ящики Cyrus-imapd:

создать sasl пользователей

# cyradm —user cyrusadmin localhost
Password:
localhost.localdomain> cm user.юзер@домен
localhost.localdomain> sam user.юзер@домен cyrusadmin c

Таким образом создаётся ящик и даются права на него админу.

7. Создание сертификатов и ключей.

Создание сертификата центра сертификации:

Указываем неск. параметров, самый главный — Common name, там должно быть имя сервера.
Получим сертификат /etc/CA/cacert.pem
и закрытый ключ /etc/CA/private/cakey.pem

Создание закрытого ключа и сертификата для Postfix:

# openssl req -new -nodes -keyout postfix_private_key.pem -out postfix_private_key.pem -days 730
# openssl ca -policy policy_anything -out postfix_public_cert.pem -infiles postfix_private_key.pem

Теперь создаём каталог под ключи и кидаем туда ключи и права выставляем на закрытый ключ:

# mkdir /etc/postfix/certs
# mv postfix_private_key.pem /etc/postfix/certs/
# mv postfix_public_cert.pem /etc/postfix/certs/
# cp /etc/CA/cacert.pem /etc/postfix/certs
# chmod 600 /etc/postfix/certs/postfix_private_key.pem

# TLS
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/postfix/certs/postfix_private_key.pem
smtpd_tls_cert_file = /etc/postfix/certs/postfix_public_cert.pem
smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
tls_random_source = dev:/dev/urandom
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes

# разрешить auth plain только под TLS, при необходимости раскомментить:
#smtpd_tls_auth_only = yes

# для оптимизации TLS
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s

Обращаю внимание на «smtpd_tls_auth_only = yes» — её лучше включить.

# openssl s_client -starttls smtp -connect localhost:25

CONNECTED(00000005)
5552:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:

То проверяем в первую очередь правильность имён и пути в main.cf!

8. Теперь антивирус и спаморез.
Ставим Amavis, ClamAV и spamassassin.

# передача писем амавису на проверку
content_filter = amavisd-new:[127.0.0.1]:10024

# amavisd-new LMTP
amavisd-new unix — — n — 2 lmtp
-o lmtp_data_done_timeout=1200s
-o disable_dns_lookups=yes

# smtpd демон, принимающий проверенную почту
127.0.0.1:10025 inet n — n — — smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_ >
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc_envelopes=yes

Качаем eicar и проверяем всё эту красоту, отправив вирь простым sendmail’ом.
Смотрим логи — там должно быть сообщение о пойманном вире.

источник

Читайте также:  Установка пластикового плинтуса на пластиковые уголки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *