Настройка Postfix и Dovecot на Ubuntu

Содержание

Установка и настройка почтового сервера PostfixAdmin на Ubuntu 16.04

Настройка Postfix и Dovecot на Ubuntu
В этой статье мы покажем вам, как установить и настроить почтовый сервер с Postfix, Dovecot, Spamassassin, SQLite и PostfixAdmin на Ан Ubuntu 16.04 VPS с Nginx и PHP 7.0. Это руководство должно работать так же хорошо и на других системах Linux VPS, но была испытана и написана для Ubuntu 16.04 VPS.

Обновите систему и установите необходимые пакеты

sudo apt-get update && sudo apt-get -y upgradesudo apt-get -y install wget nano dbconfig-common sqlite3

Создайте системного пользователя

По соображениям безопасности, мы создадим нового пользователя системы, который будет владельцем всех почтовых ящиков.

sudo useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c “Virtual Mail User” vmailsudo mkdir -p /var/vmailsudo chmod -R 770 /var/vmailsudo chown -R vmail:mail /var/vmail

Установка PHP 7.0 и PHP всех необходимых модулей

Если вы не установили PHP на вашем сервере, вы можете установить последнюю стабильную версию PHP 7.0 и все необходимые модули, с помощью следующей команды:

sudo apt-get -y install php-fpm php-cli php7.0-mbstring php7.0-imap php7.0-sqlite3

Установка и настройка Nginx

Если у вас нет веб-сервера, установленного на вашем компьютере, установите Nginx из официальных репозиториев Ubuntu:

sudo apt-get -y install nginx

Создание нового блока сервера Nginx со следующим содержанием:

sudo nano /etc/nginx/sites-available/postfixadmin.your_domain.ruserver { listen 80; server_name postfixadmin.your_domain.ru; return 301 https://$server_name$request_uri;} server { listen 443 ssl; server_name postfixadmin.your_domain.ru; root /var/www/postfixadmin-3.0; index index.php; charset utf-8; ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; ssl_protocols TLSv1.2; ssl_ciphers “EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4”; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ecdh_curve secp521r1; location / { try_files $uri $uri/ index.php; } location ~* \.php$ { fastcgi_split_path_info (.+\.php)(/.+)$; include fastcgi_params; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; }}

Активируйте блок сервера, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/postfixadmin.your_domain.ru /etc/nginx/sites-enabled/postfixadmin.your_domain.ru

Проверьте конфигурацию Nginx и перезапустите Nginx:

sudo nginx -tsudo service nginx restart

PostfixAdmin

PostfixAdmin является PHP на основе веб – интерфейса, который позволяет управлять базой данных, и использует postfix для виртуальных доменов и пользователей.

Последняя версия PostfixAdmin, 3 -й версии, поддерживает MySQL, PostgreSQL и базу данных SQLite. В этом руководстве мы будем использовать последнюю.

Скачайте архив PostfixAdmin из SourceForge и распакуйте его в каталог /var/www/:

wget -q -O – “http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz” | sudo tar -xzf – -C /var/www

Откройте файл конфигурации почты и измените следующие значения:

sudo nano /var/www/postfixadmin-3.0/config.inc.php$CONF['configured'] = true;$CONF['database_type'] = 'sqlite';$CONF['database_name'] = '/var/vmail/postfixadmin.db';// $CONF['database_host'] = 'localhost';// $CONF['database_user'] = 'postfix';// $CONF['database_password'] = 'postfixadmin';// $CONF['database_name'] = 'postfix'; $CONF['domain_path'] = 'NO';$CONF['domain_in_mailbox'] = 'YES';sudo chown -R www-data: /var/www/postfixadmin-3.0

Создание базы данных SQLite:

sudo touch /var/vmail/postfixadmin.dbsudo chown vmail:mail /var/vmail/postfixadmin.dbsudo usermod -a -G mail www-data

Для заполнения базы данных перейдите к https://postfixadmin.your_domain.ru/setup.php и вы должны увидеть что – то вроде этого:

Testing database connection – OK – sqlite://:xxxxx@//var/vmail/postfixadmin.db

Создайте нового пользователя с правами администратора:

bash /var/www/postfixadmin-3.0/scripts/postfixadmin-cli admin add admin@your_domain.ru –password strong_password –password2 strong_password –superadmin 1 –active 1

Установите и настройте Postfix

Установите postfix с помощью команды ниже:

sudo apt-get install postfix

Создайте следующие файлы:

sudo nano /etc/postfix/sqlite_virtual_alias_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT goto FROM alias WHERE address='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'sudo nano /etc/postfix/sqlite_virtual_domains_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT domain FROM domain WHERE domain='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_mailbox_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cfdbpath = /var/vmail/postfixadmin.dbquery = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = printf('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

Отредактируйте файл main.cf:

postconf -e “myhostname = $(hostname -A)” postconf -e “virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_virtual_domains_maps.cf”postconf -e “virtual_alias_maps = sqlite:/etc/postfix/sqlite_virtual_alias_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf”postconf -e “virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_virtual_mailbox_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf” postconf -e “smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem”postconf -e “smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key”postconf -e “smtpd_use_tls = yes”postconf -e “smtpd_tls_auth_only = yes” postconf -e “smtpd_sasl_type = dovecot”postconf -e “smtpd_sasl_path = private/auth”postconf -e “smtpd_sasl_auth_enable = yes”postconf -e “smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination” postconf -e “mydestination = localhost”postconf -e “mynetworks = 127.0.0.0/8″postconf -e “inet_protocols = ipv4” postconf -e “virtual_transport = lmtp:unix:private/dovecot-lmtp”

Откройте файл master.cf, найти разделы submission inet n и smtps inet n и отредактируйте следующим образом:

sudo nano /etc/postfix/master.cfsmtp inet n – y – – smtpd#smtp inet n – y – 1 postscreen#smtpd pass – – y – – smtpd#dnsblog unix – – y – 0 dnsblog#tlsproxy unix – – y – 0 tlsproxysubmission inet n – y – – 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=permit_sasl_authenticated,reject# -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=ORIGINATINGsmtps inet n – y – – smtpd -o syslog_name=postfix/smtps# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes# -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject# -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

Включите и перезапустите службу postfix

systemctl enable postfixsystemctl restart postfix

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

Установить Dovecot с поддержкой SQLite, используя команду ниже:

sudo apt-get install dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-sqlite

Откройте файл /etc/dovecot/conf.d/10-mail.conf и измените следующие значения:

mail_location = maildir:/var/vmail/%d/%nmail_privileged_group = mailmail_uid = vmailmail_gid = mailfirst_valid_uid = 150last_valid_uid = 150

Откройте файл /etc/dovecot/conf.d/10-auth.conf и измените следующие значения:

auth_mechanisms = plain login#!include auth-system.conf.ext!include auth-sql.conf.ext

Создайте новый файл dovecot-sql.conf.ext:

sudo nano /etc/dovecot/dovecot-sql.conf.extdriver = sqliteconnect = /var/vmail/postfixadmin.dbdefault_pass_scheme = MD5-CRYPTpassword_query = \ SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, \ 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid \ FROM mailbox WHERE username = '%u' AND active = '1'user_query = \ SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, \ 150 AS uid, 8 AS gid, printf('dirsize:storage=', quota) AS quota \ FROM mailbox WHERE username = '%u' AND active = '1'

В файле /etc/dovecot/conf.d/10-ssl.conf включите поддержку SSL:

ssl = yes

Откройте файл /etc/dovecot/conf.d/15-lda.conf и установите в параметре postmaster_address адрес электронной почты.

postmaster_address = postmaster@vps.your_domain.ru

Откройте файл /etc/dovecot/conf.d/10-master.conf, найдите раздел службы LMTP и изменить его на:

service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }}

Найдите раздел службы аутентификации и изменить его на:

service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail #group = vmail } user = dovecot}

Измените раздел службы auth-worker к следующим функциям:

service auth-worker { user = vmail}

Установите разрешения:

chown -R vmail:dovecot /etc/dovecotchmod -R o-rwx /etc/dovecot

Включите и перезапустите службу dovecot

systemctl enable dovecot systemctl restart dovecot

SpamAssassin

SpamAssassin является инструментом с открытым кодом написанный на Perl, который помогает отфильтровать нежелательную почту. Если вы хотите включить и настроить SpamAssassin пожалуйста, продолжайте со следующими шагами.

Чтобы установить SpamAssassin, выполните следующую команду:

sudo apt-get install spamassassinsudo adduser spamd –disabled-login

Откройте файл /etc/default/spamassassin и внесите следующие изменения:

ENABLED=1OPTIONS=”–create-prefs –max-children 5 -d 127.0.0.1 –username spamd –helper-home-dir /home/spamd/ -s /home/spamd/spamd.log”PIDFILE=”/home/spamd/spamd.pid”CRON=1

Для интеграции SpamAssassin с Postfix, добавьте следующую строку в конце файла /etc/postfix/master.cf:

smtp inet n – – – – smtpd -o content_filter=spamassassin spamassassin unix – n n – – pipe user=nobody argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Включите и перезапустите службу Spamassassin

systemctl enable spamassassinsystemctl restart spamassassinsystemctl restart postfix

Если все настроено правильно, то вы должны в состоянии войти в свой бэкэнд PostfixAdmin, перейдя по ссылке https://postfixadmin.your_domain.ru/и создать свой первый виртуальный домен и почтовый ящик.

, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник: https://andreyex.ru/ubuntu/ustanovka-i-nastrojka-pochtovogo-servera-postfixadmin-na-ubuntu-16-04/

Установка Postfix Ubuntu с Dovecot

Настройка Postfix и Dovecot на Ubuntu

Postfix – это один из самых популярных почтовых серверов, который используется для отправки, приема и пересылки почты в различных системах. Очень часто Postfix используют в качестве почтового сервера по умолчанию для веб-сайтов, поскольку он поддерживает все необходимые функции и несложен в настройке, в отличие от SendMail.

В этой статье мы рассмотрим, как выполняется установка Postfix Ubuntu 16.04 с аутентификацией через Dovecot и базу данных. Хотя статья ориентирована именно на Ubuntu, но, вся информация может быть применена и для других дистрибутивов.

Что будет сделано?

Мы установим почтовый сервер Postfix и все необходимые компоненты для работы аутентификации пользователей. Учетные записи пользователей мы будем хранить в базе данных MySQL. Аутентификация на сервере для отправки почты будет выполняться по протоколу SMTP, за это отвечает Postfix.

Также, пользователи смогут получить свои письма по протоколам IMAP или POP3 с помощью Dovecot, которая тоже будет использовать базу данных. А теперь давайте перейдем к самой настройке почтового сервера.

Настройка DNS зоны

Вы не сможете заставить все это работать на локальной машине, без привязанного к ней домена. И на сервере со статическим IP нужно сначала правильно настроить доменную зону. Это очень важно.

Вам нужно чтобы A и MX записи вашего домена указывали на IP адрес вашего сервера. Обычно это можно настроить в панели управления доменом. На обновление доменной зоны может уйти 1-2 дня.

Дальше вам нужно правильно настроить доменное на вашем VPS. FQDN (Fully Qualified Domain Name) должно состоять из имени хоста и зарегистрированного доменного имени. Сначала установим имя хоста с помощью hostnamectl. Например:

sudo hostnamectl set-hostname vps

Затем нужно добавить строчку с именем домена FQDN в файл /etc/hosts. Здесь нужно указать ваш статический адрес, имя хоста и зарегистрированный домен:

sudo vi /etc/hosts

194.67.215.125 vps.losst.ru vps

Теперь у вас есть FQDN, который будет использоваться почтовым сервером. Переходим к установке ПО.

Установка Postfix и других программ

Перед тем как пойти дальше, нужно установить все необходимое программное обеспечение. Сначала обновите репозитории до самой новой версии:

sudo apt update

Затем выполните команду для установки программ:

sudo apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql mariadb-client mariadb-server

Установка займет некоторое время в зависимости от скорости вашего интернета. Во время установки вам предстоит ответить на несколько вопросов:

Здесь нажмите Ок, затем на следующем шаге выберите Интернет сайт:

Дальше вам нужно ввести ваше доменное имя, например, losst.ru:

После завершения все сервисы запустятся автоматически, а мы можем перейти к дальнейшей настройке.

Настройка баз данных

Я не буду подробно описывать как настроить базу данных MySQL. Об этом вы можете прочитать в отдельной статье. Мы подготовим только нашу базу для Dovecot, создадим нужных пользователей и таблицы.

Подключитесь с помощью клиента к серверу баз данных:

sudo mysql -u root

Создадим новую базу данных:

> CREATE DATABASE EmailServer_db;
> USE EmailServer_db;

Затем создадим нового пользователя, который будет использоваться системой:

> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'пароль';> GRANT ALL PRIVILEGES ON * .* TO 'dba'@'localhost';

> FLUSH PRIVILEGES;

Так мы даем пользователю все необходимые полномочия для доступа к базе данных dba. Создадим таблицу для настроек Postfix:

> CREATE TABLE `Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;

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

> CREATE TABLE `Users_tbl` (`UserId` INT NOT NULL AUTO_INCREMENT,`DomainId` INT NOT NULL,`password` VARCHAR(100) NOT NULL,`Email` VARCHAR(100) NOT NULL,PRIMARY KEY (`UserId`),UNIQUE KEY `Email` (`Email`),FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE

) ENGINE = InnoDB;

И таблицу, в которой будут находиться псевдонимы, дополнительные почтовые ящики для пользователей:

> CREATE TABLE `Alias_tbl` (`AliasId` INT NOT NULL AUTO_INCREMENT,`DomainId` INT NOT NULL,`Source` varchar(100) NOT NULL,`Destination` varchar(100) NOT NULL,PRIMARY KEY (`AliasId`),FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE

) ENGINE = InnoDB;

Сейчас у вас должна получиться такая структура базы данных:

Все действия можно выполнить в PhpMyAdmin, возможно, вам будет так проще.

Создание пользователей

Дальше, перейдем к созданию пользователей, который смогут получать и отправлять письма. Создадим пользователя losst@losst.ru и admin@losst.ru. Для этого, нужно добавить две записи в таблицу Users_tbl, а также по записи в Domains_tbl и Aliases_tbl:

> INSERT INTO Domains_tbl (DomainName) VALUES ('losst.ru');> INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('пароль1', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'losst@losst.

ru');> INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('пароль2', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'admin@losst.ru');

> INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, 'info@losst.

ru', 'losst@losst.ru');

Пользователи готовы, дальше рассмотрим как заставить все это работать в Dovecot и Postfix. У нас есть два пользователя, которые относятся к одному домену и один из них имеет один псевдоним.

Настройка Postfix

Все настройки почтового сервера Postfix находятся в каталоге /etc/postfix. Здесь они могут быть разделены на несколько файлов. Основные из них два файла:

  • /etc/postfix/main.cf – основные настройки Postfix;
  • /etc/postfix/master.cf – настройки сервиса Postfix;

Теперь рассмотрим как выполняется настройка postfix ubuntu. Имя хоста устанавливается переменными myhostname и mydestination в файле main.cf:

sudo vi /etc/postfix/main.cf

myhostname = vps
mydestination = $myhostname losst.ru vps.losst.ru localhost localhost.localdomain

Вам нужно найти и добавить такие строки в main.cf для работы с dovecot и smtp. Все строки, которые совпадают с этими из оригинального конфигурационного файла нужно закомментировать:

append_dot_mydomain = nobiff = noconfig_directory = /etc/postfixmessage_size_limit = 4194304readme_directory = nosmtp_tls_session_cache_database = btree:${data_directory}/smtp_scachesmtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pemsmtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pemsmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtpd_use_tls = yesvirtual_transport = dovecotsmtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Дальше добавим наши файлы с настройками для работы с ранее созданными таблицами в базе данных. По отдельному файлу на таблицу:

virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cfvirtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf

virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf

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

sudo vi /etc/postfix/mariadb-vdomains.cf

user = dbapassword = парольhosts = 127.0.0.1dbname = EmailServer_db

query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'

sudo vi /etc/postfix/mariadb-vusers.cf

user = dbapassword = парольhosts = 127.0.0.1dbname = EmailServer_db

query = SELECT 1 FROM Users_tbl WHERE Email='%s'

sudo vi /etc/postfix/mariadb-valias.cf

user = dbapassword = парольhosts = 127.0.0.1dbname = EmailServer_db

query = SELECT Destination FROM Alias_tbl WHERE Source='%s'

Синтаксис каждого из файлов предельно простой. Мы указываем пользователя базы данных, его пароль, хост и имя базы. Последний параметр – запрос, которым postfix может получить простой список нужных ему данных – доменов, пользователей для домена, алиасов для пользователя.

Дальше установим правильные права на файлы:

sudo chmod 640 /etc/postfix/mariadb-vdomains.cf$ sudo chmod 640 /etc/postfix/mariadb-vusers.cf

$ sudo chmod 640 /etc/postfix/mariadb-valias.cf

sudo chown root:postfix /etc/postfix/mariadb-vdomains.cf$ sudo chown root:postfix /etc/postfix/mariadb-vusers.cf

$ sudo chown root:postfix /etc/postfix/mariadb-valias.cf

Мы сделали их доступными только для пользователя и группы, а также сменили группу на postfix. Дальше нужно изменить конфигурацию master.cf:

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_recipient_restrictions=permit_sasl_authenticated,reject-o milter_macro_daemon_name=ORIGINATINGpickup unix n – n 60 1 pickupcleanup unix n – n – 0 cleanupqmgr unix n – n 300 1 qmgrtlsmgr unix – – n 1000? 1 tlsmgrrewrite unix – – n – – trivial-rewritebounce unix – – n – 0 bouncedefer unix – – n – 0 bouncetrace unix – – n – 0 bounceverify unix – – n – 1 verifyflush unix n – n 1000? 0 flushproxymap unix – – n – – proxymapproxywrite unix – – n – 1 proxymapsmtp unix – – n – – smtprelay unix – – n – – smtpshowq unix n – n – – showqerror unix – – n – – errorretry unix – – n – – errordiscard unix – – n – – discardlocal unix – n n – – local#virtual unix – n n – – virtuallmtp unix – – n – – lmtpanvil unix – – n – 1 anvilscache unix – – n – 1 scache

Настройка Postfix почти завершена и вам осталось проверить ее корректность:

sudo postfix check

Если все прошло хорошо, можем идти дальше, если же нет – проверяйте настройки, возможно, где-то, что-то упустили. После этого откройте тот же файл и добавьте строчку:

dovecot unix – n n – – pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

Если это сделать раньше, то вы получите ошибку bad field count.

sudo systemctl restart postfix

Еще нам нужно проверить имеет ли Postfix доступ к созданным базам данных. Для этого будем использовать команду postmap:

sudo postmap -q losst.ru mysql:/etc/postfix/mariadb-vdomains.cf$ sudo postmap -q test.ru mysql:/etc/postfix/mariadb-vdomains.cf$ sudo postmap -q losst@losst.ru mysql:/etc/postfix/mariadb-vusers.

cf$ sudo postmap -q admin@losst.ru mysql:/etc/postfix/mariadb-vusers.cf$ sudo postmap -q none@losst.ru mysql:/etc/postfix/mariadb-vusers.cf

$ sudo postmap -q info@losst.

ru mysql:/etc/postfix/mariadb-valias.cf

Необязательно использовать правильных пользователей. Мы просто проверяем может ли программа работать с базой данных. Если вы получаете ошибку, проверьте пользователя и пароль к базе данных.

Настройка Dovecot

Установка Postfix Dovecot в связке используется чаще всего для веб-сайтов. Dovecot – это IMAP/POP3 сервер, который позволяет пользователям работать с почтой через такие клиенты, как Thunderbird. Для начала нам нужно создать группу и пользователя для обработки электронных адресов, поскольку наши ящики не привязаны к системе:

sudo groupadd -g 5000 vmail
$ sudo useradd -g vmail -u 5000 vmail -d /home/vmail -m

Настройки Dovecot распределены по нескольким файлам. Сначала приведите файл /etc/dovecot/dovecot.conf к такому виду:

sudo vi /etc/dovecot/dovecot.conf

!include_try /usr/share/dovecot/protocols.d/*.protocolprotocols = imap pop3 lmtp!include conf.d/*.conf

!include_try local.conf

Затем разрешим аутентификацию пользователей через базу данных MySQL в файле /etc/dovecot/conf.d/10-auth.conf:

sudo vi /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = yesauth_mechanisms = plain login

!include auth-sql.conf.ext

В следующем файле укажем параметры доступа к базе данных:

sudo vi /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {driver = sqlargs = /etc/dovecot/dovecot-sql.conf.ext}userdb {driver = staticargs = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir

}

Мы будем сохранять почту в папке /home/vmail/домен/имя/Maildir. Вам нужно создать папку для домена, если она не существует:

mkdir /home/vmail/losst.ru

Дальше, скажем программе, что для каждого пользователя нужно создавать отдельные почтовые ящики:

sudo vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/vmail/%d/%n/Maildirnamespace inbox {inbox = yes}mail_privileged_group = mail

mbox_write_locks = fcntl

И наконец, приведите базовые настройки в 10-master.conf к такому виду:

sudo vi /etc/dovecot/conf.d/10-master.conf

service imap-login {inet_listener imap {port = 143}inet_listener imaps {}}service pop3-login {inet_listener pop3 {port = 110}inet_listener pop3s {}}service lmtp {unix_listener /var/spool/postfix/private/dovecot-lmtp {mode = 0600user = postfixgroup = postfix}}service auth {unix_listener /var/spool/postfix/private/auth {mode = 0666user = postfixgroup = postfix}unix_listener auth-userdb {mode = 0600user = vmail}user = dovecot}service auth-worker {user = vmail}service dict {unix_listener dict {}

}

Для шифрования будем использовать самоподписанный сертификат:

sudo vi /etc/dovecot/conf.d/10-ssl.conf

ssl = requiredssl_cert =

Источник: https://losst.ru/ustanovka-postfix-ubuntu-s-dovecot

Инструкция по установке Postfix и Dovecot на Ubuntu

Настройка Postfix и Dovecot на Ubuntu

Эта инструкция содержит подробную информацию о том, как правильно инсталлировать агенты работы с электронными почтовыми сервисами Postfix и Dovecot на виртуальные серверы, работающие на ОС Ubuntu 16.04 x64.

Основные понятия

Postfix – это почтовый агент, который передает электронную почту внутри локальной сети и через сеть Интернет. Основной плюс работы с агентом – его простота, сервис обладает интуитивной конфигурацией и легко настраивается, также применяется для пересылки системных сообщений.

Dovecot –  это сервис получения электронной почты с использованием почтовых протоколов IMAP и POP3.

Инсталяция

Первый шаг – это обновление локальной базы пакетов следующей командой:

sudo apt-get update

Далее необходимо установить пакет сервиса из главного хранилища:

sudo apt-get install postfix

Запустите пользовательский интерфейс, в списке видов конфигурации сервера выберите строку «Internet Site». Это действие осуществляет автоматическое создание конфигурационного файла main.cf.

В строку “System mail name” введите данные доменного или локального имени вашего сервера.

Если вы не знаете полное имя, можно ознакомиться с данными с помощью специальной вспомогательной программы:

nslookup

Настраиваем сервис Postfix

Войдите в директорию /etc/postfix/ , где с помощью ввода команды touch необходимо создать новый документ с названием virtual . Этот файл будет служить хранилищем имен и адресов тех пользователей, которым будут доставляться электронные письма

touch virtual

Создайте новую папку в той же директории с именем private (воспользуйтесь командой mkdir). Эта папка будет играть роль хранилища настроек yandex smtp:

sudo mkdir private

Перейдите в созданную папку и создайте следующие документы с помощью ввода команды touch:

touch canonical sender_relay sasl_passwd

Где приведенные понятия означают:

  • canonical – создание правил подмены адресов пользователей;
  • sender_relay – команда создает связи между доменами и отправителями к внешним службам;
  • sasl_passwd – документ, который будет содержать внешние данные провайдера электронной почты.

Следующий шаг – внесение корректировок в конфигурационный файл. Необходимо войти в main.cf. через привилегированный режим, открыть документ нужно в текстовом редакторе:

sudo nano /etc/postfix/main.cf

Приведенные данные имеют следующий вид: параметр равен значение1, значение2, значение3.

Важно! Начинать комментарии нужно с ввода знака #.

Выберите строку myhostname и смените введенные данные на имя вашего домена (если его нет, то не меняйте строку):

myhostname = example.org В строку mydestination введите данные ip-адреса через запятую. Чтобы узнать адрес, воспользуйтесь нижеприведенной командой:
ifconfig | grep “inet addr” -m 1

Для того чтобы обеспечить возможность пересылки писем на другие почтовые адреса и домены, необходимо добавить virtual_  перед параметром alias_maps.

Далее измените индентификатор таким образом, как показано ниже:

Измените расположение хэша на /etc/postfix/virtual:

virtual_alias_maps = hash:/etc/postfix/virtual

Данные 127.0.0.0/8 для параметра mynetworks – это безопасная авторизация локальной машины.

Для использования Yandex SMTP при отправке писем, в конце документа введите такие данные: smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_type = cyrus smtp_sasl_mechanism_filter = login smtp_sender_dependent_authentication = yes sender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relay

sender_canonical_maps = hash:/etc/postfix/private/canonical

В приведенном выше перечне по порядку параметры означают:

  • запускает работу поддержки фреймворка sasl;
  • здесь необходимо прописать путь к файлу с внешними учетными данными;
  • параметр безопасности с определенными значениями:
    • noanonymous – запрет на анонимную проверку подлинности ;
    • noplaintext – запрет на передачу незашифрованного пароля и имени пользователя;
    • nodictionary – запрет уязвимых для атак по словарю механизмов;
    • mutual_auth – применение только таких механизмов, которые прошли проверку на подлинность по отношению клиента к серверу и наоборот.
  • данные типа плагина для проверки подлинности;
  • поддерживаемые способы проверки подлинности;
  • аутентификация осуществляется доменом отправителя;
  • путь к документу sender_relay;
  • путь к файлу canonical.

В файл canonical, лежащий в директории /etc/postfix/private/ внесите данные:

@yandex.ru user_name@yandex.ru

В файл sender_relay введите:

@yandex.ru smtp.yandex.ru

В файл sasl_passwd внесите данные своего пароля (вместо ***):

[smtp.yandex.ru] user@yandex.ru:***

Чтобы обеспечить работу переадресации, нужно создание псевдонимов. Для этого войдите в документ virtual в привилегированном режиме, откройте файл в текстовом редакторе:

sudo nano /etc/postfix/virtual

Здесь необходимо ввести адреса электронной почты пользователей, которым будут приходить письма, а также ввести придуманные адреса, которые нужно будет создать. Чтобы увидеть всех пользователей сервиса, введите:

cut -d: -f1 /etc/passwd

Конвертируйте файл virtual в документы etc/postfix/private/ с помощью следующей команды:

sudo postmap /etc/postfix/virtual sudo postmap /etc/postfix/private/*

Чтобы сохранить изменения, перезагрузите сервер.

sudo /etc/init.d/postfix restart

Корректность работы агента

Чтобы облегчить работу, установите программу mutt:

sudo apt-get install mutt

Для проверки корректности работы сервиса отправьте электронное письмо на любой почтовый ящик:

Для того, чтобы проверить правильность работы агента, необходимо отправить письмо на любой адрес (при этом помните, что письма, отправленные на адреса Google, попадают в папку спам).

Получение почты с помощью Dovecot

Скачайте установочные пакеты из хранилища:

sudo apt-get install dovecot-imapd dovecot-pop3d

В документ /etc/dovecot/dovecot.conf внесите перечень протоколов отдельной строкой:

protocols = pop3 pop3s imap imaps

В файле /etc/dovecot/conf.d/10-mail.conf удостоверьтесь, что данные выглядят так:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Перезапустите сервер.

sudo /etc/init.d/dovecot restart

Войдите в документ /etc/hosts  и внесите данные доменного имени:

ip-address example.com

Откройте порты для почтовых клиентов:

iptables -A INPUT -p tcp –dport 220 -j ACCEPT iptables -A INPUT -p tcp –dport 993 -j ACCEPT iptables -A INPUT -p tcp –dport 110 -j ACCEPT

iptables -A INPUT -p tcp –dport 995 -j ACCEPT

Чтобы удостовериться, что все работает правильно, воспользуйтесь той же процедурой, что и для агента Postfix. Обратите внимание, что письмо нужно отправить только реальному пользователю с использованием доменного имени.

Источник: https://oblako.kz/help/linux/ustanovka-postfix-i-dovecot-na-ubuntu

Установка почтового сервера Postfix на Ubuntu в связке Postfix + Dovecot + MySQL

Настройка Postfix и Dovecot на Ubuntu

В данной статье продемонстрирована базовая настройка связки Postfix + Dovecot + MySQL с поддержкой безопасных соединений.Статья написана с учетом того, что вы работаете с правами суперпользователя (root).

Большую часть пакетов в процессе настройки мы будем устанавливать с помощью Aptitude с загрузкой из сети. Для начала, нам нужно обновить базу данных пакетов:

# apt-get update

1. Установка MySQL-сервера и средств администрирования (phpMyAdmin)

Поскольку управлять доменами и почтовыми ящиками удобнее с помощью Postfix Admin, требуется поставить Web-сервер Apache и PHP. Плюс — работать с базами данных MySQL удобнее с использованием phpMyAdmin. Соответственно, ставим необходимые пакеты:

# apt-get install apache2 php5 mysql-server

# apt-get install phpmyadmin

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

Лучше соблюдать приведенную последовательность команд, поскольку в некоторых версиях Linux при одновременной установке apache2 и phpmyadmin, последний — не регистрировался в хосте по-умолчанию.

2. Установка PostfixAdmin

В используемом мной дистрибутиве в списке стандартных пакетов Aptitude отсутствует PostfixAdmin, поэтому качаем его с сайта производителя и устанавливаем вручную. На момент написания статьи последняя версия 2.3.

Устанавливаем скачанный пакет:

# dpkg -i postfixadmin-2.3.2_all.deb

Если установщик выдаст ошибку зависимостей, т.е. не хватает пакетов, нужно просто дать еще одну команду:

# apt-get -f install

В результате будут установлены все зависимые пакеты, включая и Postfixadmin. В процессе настройки надо отметить apache2 для запуска Postfixadmin.

В ходе настройки базы данных необходимо задать пароль администратора MySQL, который был задан на первом этапе (см.п.1), а потом задать пароль для пользователя postfixadmin. Для примера я использовал 123456.

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

На данном этапе наша задача настроить подключение PostfixAdmin к базе данных, зарегистрировать домен и несколько почтовых ящиков для нового домена.

Проверяем создала ли конфигурационная утилита базу данных и пользователя для нашего PostfixAdmin. Для этого заходим через phpMyAdmin на сервер MySQL. При установке по-умолчанию phpMyAdmin работает по адресу http://ВашХост/phpmyadmin. В списке баз данных должна быть БД postfixadmin.

Не пугайтесь, что она пустая. Структура таблиц будет создана позже во время настройки подключения к БД самого PostfixAdmin. Так же в списке пользователей должен быть пользователь с идентификатором postfixadmin.

Если этого нет, то необходимо создать БД и пользователя с максимальными правами доступа к этой БД.

К сожалению, конфигурационная утилита установки пакета не изменяет параметров файла config.inc.php, даже если с ее помощью создается БД. Конфигурационный файл PostfixAdmin находится в каталоге /etc/postfixadmin/config.inc.php. Изменяем параметры в данном файле в соответствии с приведенным ниже кодом:

$CONF['database_type'] = 'mysql';

$CONF['database_host'] = 'localhost';

$CONF['database_user'] = 'postfixadmin';

$CONF['database_password'] = '123456';

$CONF['database_name'] = 'postfixadmin';

$CONF['database_prefix'] = '';

Изменим алгоритм шифрования пароля заданный по-умолчанию в PostfixAdmin:

$CONF['encrypt'] = 'md5';

Обращаемся к процедуре настройки http://ВашХост/postfixadmin/setup.php. Если ошибок не обнаружено, внизу страницы появится запрос на создание пароля установки. Этот пароль используется для создания администраторов. После указания пароля и нажатия на кнопку Generate password hash, должна появится строка вида:

$CONF['setup_password'] = '272aa1a6bdc0…283ac11e57';

В файле config.inc.php необходимо найти соответствующий параметр и заменить этой строкой, только после этого можно будет создать администратора.

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

Устанавливаем:

# apt-get install postfix postfix-mysql dovecot-common dovecot-imapd dovecot-pop3d openssl

После установки, чтоб предотвратить мешанину из конфигурационных файлов, в папке /etc/postfix создаем подпапку mysql. В ней будут храниться файлы запросов почтового сервера к БД. В этой папке создадим три конфигурационных файла:

4.1. virtual-alias-maps.cf

user = postfixadmin

password = 123456

hosts = 127.0.0.1

dbname = postfixadmin

query = select `goto` from `alias` where `address` = '%s'

user = postfixadmin

password = 123456

hosts = 127.0.0.1

dbname = postfixadmin

query = select 1 from `domain` where `domain` = '%s'

user = postfixadmin

password = 123456

hosts = 127.0.0.1

dbname = postfixadmin

query = select 1 from `mailbox` where `username` = '%s'

Создаем пользователя и группу, которые будут отвечать за почту, точнее за почтовые ящики:

# groupadd -g 5000 vmail

# useradd -g vmail -u 5000 vmail -d /home/vmail -m

Postfix имеет удобный скрипт для управления конфигурационным файлом. Этот скрипт избавляет от необходимости искать директивы вручную. Теперь, используя этот скрипт, зададим конфигурацию для Postfix. Обычно для настройки параметров, дабы не вводить это все каждый раз вручную, я создаю отдельный скрипт. Назовем его postfix-myconf.sh:

#!/bin/sh

postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql/virtual-mailbox-domains.cf

postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql/virtual-mailbox-maps.cf

postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql/virtual-alias-maps.cf

postconf -e virtual_uid_maps=static:5000

postconf -e virtual_gid_maps=static:5000

postconf -e virtual_transport=dovecot

postconf -e dovecot_destination_recipient_limit=1

postconf -e smtpd_tls_cert_file=/etc/ssl/cert/postfix.pem

postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem

postconf -e smtpd_use_tls=yes

postconf -e smtpd_sasl_type=dovecot

postconf -e smtpd_sasl_path=private/auth

postconf -e smtpd_sasl_auth_enable=yes

postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination

Заключительным аккордом настройки Postfix будет добавление Dovecot интерфейса. Для этого в файл /etc/postfix/master.cf добавляем две строки:

dovecot unix – n n – – pipe

     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

На данном этапе мы создаем ключи и сертификаты для Postfix и Dovecot. Процедура проста, как гвоздь: даем пару команд и отвечаем на заданные вопросы:

# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem

# chmod o= /etc/ssl/private/dovecot.pem

# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem

# chmod o= /etc/ssl/private/postfix.pem

В результате должны появится 4 файла: /etc/ssl/certs/dovecot.pem, /etc/ssl/private/dovecot.pem, /etc/ssl/certs/postfix.pem и /etc/ssl/private/postfix.pem. И не забываем дать права доступа на полученные файлы.

6. Настройка Dovecot

Конфигурационные файлы Dovecot находятся в /etc/dovecot.

6.1. dovecot.conf

Находим перечисленные ниже директивы и приводим их к заданному виду:

protocols = imap imaps pop3 pop3s

disable_plaintext_auth = no

mail_location = maildir:/home/vmail/%d/%n

namespace private {

   separator = .

   prefix = INBOX.

   inbox = yes

}

mechanisms = plain login

passdb sql {

   args = /etc/dovecot/dovecot-sql.conf

}

userdb static {

   args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes

}

socket listen {

   master {

      path = /var/run/dovecot/auth-master

      mode = 0600

      user = vmail

   }

   client {

      path = /var/spool/postfix/private/auth

      mode = 0660

      user = postfix

      group = postfix

   }

}

protocol lda {

   postmaster_address = postmaster@ВашДомен.ru

   auth_socket_path = /var/run/dovecot/auth-master

   mail_plugins = sieve

   log_path = /home/vmail/dovecot-deliver.log

   global_script_path = /home/vmail/globalsieverc

}

Настраиваем связку Dovecot с MySQL. Точно так же находим перечисленные ниже директивы и приводим их к заданному виду:

driver = mysql

connect = host=127.0.0.1

dbname=postfixadmin user=postfixadmin password=123456

default_pass_scheme = PLAIN-MD5

password_query = SELECT username as user, password FROM mailbox WHERE username = '%u'

Postfix и Dovecot настроены. Перезапускаем:

# /etc/init.d/dovecot restart

# postfix reload

Если все сделано без ошибок, то в файле /var/log/mail.log должны появиться строки:

mail dovecot: Dovecot v1.0.15 starting up

mail dovecot: auth-worker(default):

mysql: Connected to 127.0.0.1 (postfixadmin)

Журналы ошибок и вообще результаты деятельности почтовой системы лежат в файлах:

  • /var/log/mail.log
  • /var/log/mail.err
  • /var/log/mail.info
  • /var/log/mail.warn

Тема настройки почтовой системы далее будет расширена подключением Web-интерфейса почты, подключение антивирусной программы, борьба со спамом.

Удачной настройки.

8. Возможные проблемы и способы их решения

В логах ошибка: postfix fatal: open database /etc/aliases.db: no such file or directory

Решение:

Генерируем aliases.db с использованием скрипта postalias:

# postalias /etc/aliases /etc/aliases.db

В результате создадутся необходимые файлы.

E-mail

Источник: http://www.itworkroom.com/install-postfix-ubuntu/

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.