Авторизация на сайте

Последнее из портфолио

Здравствуйте! После регистрации Вам станут доступны дополнительные инструменты просмотра и скрытый контент. Зарегистрироваться

Блог Олега Прокофьева » Блог » Настройка Postfix3 в Centos7

Настройка Postfix3 в Centos7

0


Как вам может быть известно, я не очень доверяю SaaS-решениям. Причин тому больше одной. SaaS’ы оставляют за собой право менять Terms of Service в любой момент как им вздумается. SaaS’ы сливают персональные данные. SaaS’ы меняют пользовательский интерфейс и функционал на свое усмотрение. Наконец, если вы используете SaaS’ы от какого-нибудь Google, то однажды получив в них бан за любое нарушение ToS (который, напомню, постоянно меняется), назад вы больше никогда не разбанитесь. В прошлой статье мы решали описанные проблемы, поднимая / перенося на VDS свой блог. Сегодня же мы попробуем разобраться, как с нуля поднять собственный почтовый сервер с TLS, спам-фильтром и списками рассылок.

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

Подготовка


Примем за рабочую теорию, что у вас есть выделенный сервер (VDS) и указывающее на него доменное имя. Далее в качестве примера я буду использовать домен mail.blanet.ru. Если VDS у вас нет, сейчас есть множество VDS-провайдеров, предоставляющих их за смешные деньги. На момент написания этих строк я предпочитаю пользоваться DigitalOcean. При регистрации в DigitalOcean по моей реферальной ссылке вы получаете на счет 10$, что позволит бесплатно пользоваться VDS в течение двух месяцев.

В /etc/hosts прописываем Fully Qualified Domain Name (FQDN):
178.250.244.94    mail.blanet.ru    mail

Ставим необходимые пакеты:
sudo yum install mysql-server mysql-client postfix3 postfix3-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql


При установке Postfix на вопрос «General type of mail configuration» говорим «Internet Site». На вопрос о доменном имени отвечаем «mail.blanet.ru».

Postfix представляет собой Mail Transfer Agent (MTA), он будет отвечать за отправку и получение почты по SMTP. Dovecot будет предоставлять доступ к письмам по протоколу IMAP (также поддерживается ныне устаревший POP3). СУБД MySQL будет использоваться для хранения информации о доменах, пользователях и алиасах. Вместо MySQL с тем же успехом можно взять и MariaDB.

Наполняем базу


В MySQL создаем пользователя и базу данных:
mysql --user root --password
mysql> CREATE DATABASE mail;
mysql> CREATE USER 'mail'@'localhost' IDENTIFIED BY 'ПАРОЛЬ_ОТ_БД';
mysql> GRANT ALL ON mail.* TO 'mail'@'localhost';
mysql> exit


Заходим под новым пользователем:
mysql mail --user mail --password


Создаем следующие таблицы:
CREATE TABLE `virtual_domains` (
`id`  INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `virtual_users` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`password` VARCHAR(106) NOT NULL,
`email` VARCHAR(120) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id)
  ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `virtual_aliases` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`source` VARCHAR(100) NOT NULL,
`destination` VARCHAR(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id)
  ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Вводим информацию о доменах, пользователях и алиасах:
INSERT INTO virtual_domains (`id`, `name`) VALUES (1, 'blanet.ru');

INSERT INTO virtual_users (`id`, `domain_id`, `email`, `password`)
  VALUES (1, 1, 'mail@blanet.ru',
    ENCRYPT('ПАРОЛЬ_ДЛЯ_ПОЧТЫ', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))));

INSERT INTO virtual_aliases
  (`id`, `domain_id`, `source`, `destination`)
    VALUES (1, 1, 'postmaster@blanet.ru', 'mail@blanet.ru');


В колонке destination таблицы virtual_aliases можно указывать несколько получателей через запятую, в том числе и на всяких gmail.com. Таким образом, можно создавать списки рассылки. Если алиасы образуют цепочку, например postmaster@blanet.ru → mail@blanet.ru → somebody@example.org, то это тоже превосходно работает.

Для создания хэша пароля даем команду:
doveadm pw -s SHA512-CRYPT
Вводим 2 раза пароль.
Получаем hash. Его и вносим в БД взамен существующему

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


Правим /etc/postfix/main.cf:
# дописываем или изменяем:

# пока что без TLS
smtpd_use_tls=no
myhostname = mail.blanet.ru
mydestination = localhost

virtual_transport = lmtp:unix:private/dovecot-lmtp
# то, что пока нет таких файлов - это ОК
virtual_mailbox_domains = mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-users.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-aliases.cf

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,⏎
  permit_mynetworks,reject_unauth_destination

# увеличиваем максимальный размер письма до 50 Мб
message_size_limit = 52428800


Создаем /etc/postfix/mysql-domains.cf:
hosts = 127.0.0.1
user = mail
password = ПАРОЛЬ_ОТ_БД
dbname = mail
query = SELECT 1 FROM virtual_domains WHERE name='%s'


…, а также /etc/postfix/mysql-users.cf:
hosts = 127.0.0.1
user = mail
password = ПАРОЛЬ_ОТ_БД
dbname = mail
query = SELECT 1 FROM virtual_users WHERE email='%s'


…, и наконец /etc/postfix/mysql-aliases.cf:
hosts = 127.0.0.1
user = mail
password = ПАРОЛЬ_ОТ_БД
dbname = mail
query = SELECT destination FROM virtual_aliases WHERE source='%s'


Поскольку файлы содержат пароль от базы, стоит выставить на них правильные права:
sudo chown postfix:postfix /etc/postfix/mysql-*.cf
sudo chmod o-rwx /etc/postfix/mysql-*.cf


Перезапускаем Postfix:
sudo service postfix restart


Проверяем, что он видит домены, пользователей и алиасы:
sudo postmap -q mail@blanet.ru mysql:/etc/postfix/mysql-users.cf
sudo postmap -q blanet.ru mysql:/etc/postfix/mysql-domains.cf
sudo postmap -q postmaster@blanet.ru mysql:/etc/postfix/mysql-aliases.cf

Ответы на команды должны быть такими:
1
1
mail@blanet.ru

Все, postfix настроен!

О настройке Dovecot я вам расскажу в статье "Установка Dovecot в Centos7"

Похожие новости

  • Блог >> Установка Dovecot в Centos7 >> Займемся настройкой dovecot — сервер доставки почты пользователю по протоколам pop3 и imap. Я не вижу причин использовать pop3. Он неудобен по

  • Блог >> Установка Postfix3 в Centos7 >> Установите Postfix 3 в Linux CentOS для отправки электронной почты через SMTP, SMTPS и STARTTLS Краткое руководство, объясняющее, как установить и

  • Блог >> Greylist для Postfix3 >> Postgrey-это сервер политики, реализующий серый список для фильтрации спама на почтовых серверах Postfix. Принцип серого списка работает на том


  • Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.