Название: Почтовый сервер на базе Postfix, Dovecot и Ubuntu 12.04 LTS и виртуальных доменов.
1. После установки Ubuntu Server 12.04.3 LTS выполним обновление пакетов
2. Устанавливаем Postfix, Dovecot, MySQL и другие необходимые пакеты
3. Подключаемся к MySQL
и создаем базу данных, в которой будут храниться учетные записи почтовых аккаунтов
Внимание! Далее будет использоваться пользователь root и hen gfhjkm для доступа к базе данных почтовых аккаунтов в MySQL.
создаем таблицу доменов
Создаем таблицу …
Создаем таблицу для пользователей
4. Проверим, что MySQL связана с localhost (127.0.0.1). Для найдем в файле /etc/mysql/my.cnf строку bind-address = 127.0.0.1
в результате выполнения команды на экран должно быть выведено
5. Создаем группу vmail и пользователя vmail, входящего в эту группу.
6. Создадим каталог, где будут размещаться почтовые ящики:
сменим имя и группу владельца созданной директории на vmail:vmail
дадим владельцу и его группе полные права на каталог, а другим все запретим
Начинаем конфигурировать Postfix.
7. Создаем конфигурационный файл для доступа к почтовым доменам в базе данных MySQL
8. Создаем конфигурационный файл для определения автоматической пересылки писем с ящика на ящик
9. Создаем конфигурационный файл для доступа к почтовым аккаунтам в базе данных MySQL
10. Создаем конфигурационный файл для виртуального отображения почты
11. Владельцем данных конфигурационных файлов должен быть root, группой владельца - postfix
12. Редактируем конфигурационный файл главного модуля main
Пишем туда следующее:
13. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель будет представляться именем нашего сервера
прохешируем
14. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель извне будет говорить, что он из нашей сети
прохешируем
15. Настраиваем демон saslauthd для взаимодействия с Postfix
необходимо проверить, чтобы были закомментированы все строки, и написать следующее:
16. Настраиваем pam-аутентификацию
Пишем туда следующее:
17. Настраиваем Postfix для взаимодействия с saslauthd
Пишем туда следующее:
18. Владельцем данных файлов должен быть root
19. Редактируем конфигурационный файл Postfix
Добавляем следующие строки
20. Добавляем пользователя postfix в группу sasl
21. Конфигурируем Dovecot
Нужно убедится в том, что все строки закомментированы и добавить следующее
22. Настраиваем параметры соединения с базой данных MySQL
Пишем туда следующее:
23. Проверяем конфигурацию Dovecot
24. Создадим в базе данных MySQL почтовый домен и два пользователя
25. Создадим сертификат и ключ для SSL
В итоге в каталоге /etc/dovecot будет создан сертификат
26. Владельцем ключа должен быть root
27. Перезапускаем saslauthd, dovecot и postfix
28. в Thunderbird настройки:
29. Далее установим, squirrelmail (это веб интерфейс, для нашей почты.) и создадим симлинк в корневую папку нашего веб сервера (у меня апач поэтому папка будет иметь следующее название www)
1. После установки Ubuntu Server 12.04.3 LTS выполним обновление пакетов
Code:
sudo apt-get update sudo apt-get upgrade
Code:
sudo apt-get install postfix dovecot-common dovecot-imapd mysql-server mysql-client postfix-mysql dovecot-mysql sasl2-bin В процессе установки MySQL задаем пароль root в MySQL: sqlrootpass В процессе установки Postfix выбираем тип конфигурации «no configuration» (без конфигурации)
Code:
mysql -u root –p
Code:
CREATE DATABASE base0;
Code:
USE base0;
создаем таблицу доменов
Code:
CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
Code:
CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
Code:
CREATE TABLE users ( user varchar(80) NOT NULL, email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) ); CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
Code:
grep 'bind-address' /etc/mysql/my.cnf
Code:
bind-address = 127.0.0.1
Code:
sudo groupadd -g 5000 vmail sudo useradd -g vmail -u 5000 vmail
Code:
sudo mkdir /var/vmail
Code:
sudo chown vmail:vmail /var/vmail
Code:
sudo chmod 770 /var/vmail
7. Создаем конфигурационный файл для доступа к почтовым доменам в базе данных MySQL
Code:
sudo nano /etc/postfix/mysql-virtual_domains.cf user = root password = 12345 dbname = base0 query = SELECT domain AS virtual FROM domains WHERE domain = '%s' hosts = 127.0.0.1
Code:
sudo nano /etc/postfix/mysql-virtual_forwardings.cf user = root password = 12345 dbname = base0 query = SELECT destination FROM forwardings WHERE source = '%s' hosts = 127.0.0.1
Code:
sudo nano /etc/postfix/mysql-virtual_mailboxes.cf user = root password = 12345 dbname = base0 query = SELECT CONCAT( SUBSTRING_INDEX(email, '@', -1), '/' , SUBSTRING_INDEX(email, '@', 1), '/' ) FROM users WHERE email = '%s' hosts = 127.0.0.1
Code:
sudo nano /etc/postfix/mysql-virtual_email2email.cf user = root password = 12345 dbname = base0 query = SELECT email FROM users WHERE email = '%s' hosts = 127.0.0.1
Code:
sudo chown root /etc/postfix/mysql-virtual_*.cf sudo chgrp postfix /etc/postfix/mysql-virtual_*.cf
Code:
sudo nano /etc/postfix/main.cf
Code:
smtpd_banner = $myhostname ESMTP (Ubuntu) #Отключаем использование comsat biff = no #Запрещаем автоматически дополнять неполное доменное имя в адресе письма append_dot_mydomain = no #Указываем имя нашего хоста myhostname = ubuntu.myubuntu.org # Указываем файл с псевдонимами почтовых ящиков alias_maps = hash:/etc/postfix/aliases #Указываем, для каких доменов будем принимать почту mydestination = localhost # Не будем ограничивать размер почтовых ящиков mailbox_size_limit = 0 recipient_delimiter = + #Указываем прослушивание на всех сетевых интерфейсах inet_interfaces = all #Указываем обязательность использование клиентами команды helo smtpd_helo_required = yes #Описываем доступ доменам, почтовым ящикам и т.д. virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf virtual_mailbox_base = /var/vmail virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 home_mailbox = Maildir/ local_recipient_maps = $virtual_mailbox_maps #Описываем авторизацию по SMTP для клиентов не из доверенной зоны smtpd_sasl_type = dovecot smtpd_sasl_auth_enable = yes smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous #broken_sasl_auth_clients = yes #Указываем каталог очереди для Postfix queue_directory = /var/spool/postfix smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/dovecot/example.key smtpd_tls_cert_file = /etc/dovecot/example.cert smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 1s tls_random_source = dev:/dev/urandom
Code:
sudo nano /etc/postfix/helo.list example.org 550 Don't use my hostname
Code:
sudo postmap /etc/postfix/helo.list
Code:
sudo nano /etc/postfix/ext_sender example.org 450 Do not use my domain in your envelope sender
Code:
sudo postmap /etc/postfix/ext_sender
Code:
sudo mkdir -p /var/spool/postfix/var/run/saslauthd sudo nano /etc/default/saslauthd
Code:
START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Code:
sudo nano /etc/pam.d/smtp
Code:
auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=user passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=user passwdcolumn=password crypt=1
Code:
sudo nano /etc/postfix/sasl/smtpd.conf
Code:
pwcheck_method: saslauthd mech_list: plain login allow_plaintext: true auxprop_plugin: mysql sql_hostnames: 127.0.0.1 sql_user: root sql_passwd: 12345 sql_database: base0 sql_select: SELECT password FROM users WHERE user = '%u'
Code:
sudo chown root /etc/pam.d/smtp /etc/postfix/sasl/smtpd.conf
Code:
sudo nano /etc/postfix/master.cf
Code:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} submission inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_sasl_security_options=noanonymous -o smtpd_sasl_local_domain=$myhostname -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_login_maps=hash:/etc/postfix/virtual -o smtpd_sender_restrictions=reject_sender_login_mismatch -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
Code:
sudo adduser postfix sasl
Code:
sudo nano /etc/dovecot/dovecot.conf
Code:
!include_try /usr/share/dovecot/protocols.d/*.protocol #Разрешаем авторизацию в plaintext disable_plaintext_auth = no # Журнал будем писать в файл /var/log/dovecot.err log_path = /var/log/dovecot.err # Формат даты и времени для регистрируемых событий log_timestamp = "%Y-%m-%d %H:%M:%S " #Включаем SSL ssl = yes ssl_cert =< /etc/dovecot/example.cert ssl_key =< /etc/dovecot/example.key #Строка приветствия при ответе сервера login_greeting = Dovecot ready. #Описываем тип (maildir) и местонахождения почтовых ящиков (/var/vmail/%d/%n) %d - имя сервера, %n - имя пользователя mail_location = maildir:/var/vmail/%d/%n #Задаем идентификатор пользователя и группы, с которыми будет работать dovecot mail_uid = 5000 mail_gid = 5000 mail_privileged_group = vmail valid_chroot_dirs = /var/vmail #Настраиваем вывод отладочных сообщений auth_verbose = yes auth_debug = yes auth_debug_passwords = yes #Типы допустимых вариантов аутентификации auth_mechanisms = plain login digest-md5 #Задаем параметры аутентификации passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } service auth { unix_listener auth-userdb { mode = 0660 user = virtual group = virtual } unix_listener /var/spool/postfix/private/auth { mode = 0660 # Assuming the default Postfix user and group user = postfix group = postfix } } service imap-login { inet_listener imap { port = 0 } inet_listener imaps { port = 993 ssl = yes } }
Code:
sudo nano /etc/dovecot/dovecot-sql.conf
Code:
driver = mysql connect = host=127.0.0.1 dbname=base0 user=root password=12345 default_pass_scheme = CRYPT password_query = SELECT email AS user , password FROM users WHERE (user = '%u') or (email = '%u');
Code:
dovecot -a
Code:
mysql -u root -p USE base0; INSERT INTO domains (domain) VALUES ('example.org'); INSERT INTO users (user, email, password) VALUES ('support', 'support@example.org', ENCRYPT('125148')); INSERT INTO users (user, email, password) VALUES ('terra', 'terra@example.org', ENCRYPT('148125'));
Code:
cd /etc/dovecot
Code:
sudo openssl req -new -outform PEM -out example.cert -newkey rsa:2048 -nodes -keyout example.key -keyform PEM -days 365 -x509
Code:
example.cert и ключ example.key
Code:
sudo chown root /etc/dovecot/example.key
Code:
sudo service saslauthd restart sudo service dovecot restart sudo service postfix restart
Code:
imap порт 993 имя пользователя user1 SSL/TLS обычный пароль smtp порт 465 имя пользователя user1 SSL/TLS обычный пароль
Code:
apt-get install squirrelmail ln -s /usr/share/squirrelmail/ /var/www/webmail
Comment