Главная >> Инструкции >> Установка Postfix Ubuntu с Dovecot

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

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

В этой статье мы рассмотрим, как выполняется установка Postfix Ubuntu 20.04. Хотя статья ориентирована именно на Ubuntu, но, вся информация может быть применена и для других дистрибутивов. Раньше на этом месте была другая статья, она была более обширная, но и более сложная. Я решил сделать её проще.



Содержание статьи

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

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

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

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

vps A 185.117.155.209

В данном случае надо писать только поддомен. А В MX записи для корневого домена следует указывать знак @. Но для поддомена надо указать этот поддомен:

vps MX vps.losst.pro.

2. Настройка имени хоста

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

sudo hostnamectl set-hostname vps

 

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

sudo vi /etc/hosts

 

185.117.155.209 vps.losst.pro vps

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

3. Установка Postfix

Сначала обновите репозитории до самой новой версии:

sudo apt update

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

sudo apt install postfix mailutils

 

Кроме самого почтового сервиса нам понадобиться набор утилит mailutils для тестирования его работы. Установка займет некоторое время в зависимости от скорости вашего интернета. Во время установки вам предстоит ответить на несколько вопросов. Надо выбрать вариант конфигурации Postfix:

 

 

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

 

Дальше вам нужно ввести ваш FQDN, настроенный ранее, в данном случае, vps.losst.pro:

 

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

4. Настройка имени хоста

Осталось настроить имя хоста и можно пробовать тестировать работу Postfix. Откройте файл /etc/postfix/main.cf и убедитесь, что в переменной myhostname содержится ваш FQDN. Если нет - поправьте:

sudo vi /etc/postfix/main.cf

В переменной mydestination должны быть перечислены все домены, для которых вы собираетесь принимать почту. В том числе и vps.losst.pro.

5. Тестирование отправки почты

Теперь почтовый сервер готов к работе. Он будет отправлять письма от имени настроенного домена, в данном случае vps.losst.pro, а в качестве почтовых ящиков будут использоваться пользователи в системе. В данном случае root. Чтобы отправить тестовое письмо воспользуйтесь утилитой mail:

echo "Test mail" | mail -s "Test mail" ваш_ящик@mail.ru

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

Убедитесь, что отправитель такой, как мы обсудили. А затем ответьте на это письмо. Если всё настроено верно, то выполнив утилиту mail без параметров вы сможете прочитать ваш ответ:

mail

6. Виртуальные почтовые ящики

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

sudo mkdir -p /home/vmail{admin,support,info}

Всем этим будет владеть пользователь vmail с группой vmail, их надо тоже создать:

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

Далее дайте права на ранее созданную папку пользователю vmail:

chown vmail:vmail /home/vmail

Далее можно переходить к настройке Postfix. Сначала надо убрать домен для которого мы будем принимать почту на виртуальные почтовые ящики из переменной mydestinations. Доставка почты для домена можно выполняться либо по системным пользователям через директиву mydestinations, либо по виртуальным ящикам с помощью директивы virtual_mailbox_domains. Добавьте его в эту директиву и ещё несколько параметров:

sudo vi /etc/postfix/main.cf

virtual_mailbox_domains = vps.losst.pro
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmaps
virtual_minimum_uid = 1000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

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

Осталось создать файл с виртуальными почтовыми ящиками. Каждая запись этого файла состоит из двух полей: имени пользователя в формате имя@домен и пути к файлу, в который будет складываться его почта, относительно папки из virtual_mailbox_base. Например, давайте создадим три почтовых ящика:

sudo vi /etc/postfix/vmaps

admin@vps.losst.pro vps.losst.pro/admin
support@vps.losst.pro vps.losst.pro/support
info@vps.losst.pro vps.losst.pro/info

Чтобы убедится, что всё читается используйте команду postmap с опцией -q. Например:

postmap -q admin@vps.losst.pro hash:/etc/postfix/vmaps

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

7. Тестирование виртуальных ящиков

Когда всё будет настроено не забудьте перезапустить почтовый сервер командой:

sudo systemctl restart postfix

Затем можно отправить себе письмо с помощью той же утилиты mail:

echo "Test mail" | mail -s "Test mail" admin@vps.losst.pro

Если всё хорошо, письмо должно лежать в файле /home/vmail/vps.losst.pro/admin:

cat /home/vmail/vps.losst.pro/admin

Если же его нет, посмотрите не вернулось ли оно отправителю, выполнив mail без параметров. Если вернулось, то там будет указана причина почему. Ещё можно посмотреть лог отправки писем в /var/log/mail.log. Одной из причин того, что письма не приходят может быть то, что вы неверно выставили права на папку /home/vmail или же забыли убрать виртуальный домен из mydestination.

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

Почтовый сервер вряд-ли обойдется без возможности отправки почты по SMTP. Поддержка этого протокола уже есть в Postfix, но по умолчанию там нет никакой авторизации. Для добавления поддержки авторизации следует использовать Dovecot. Как бонус вы получите возможность просматривать ваши письма по протоколам POP3 и IMAP. Сначала надо установить сам сервис Dovecot:

sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd

Поскольку для получения почты по IMAP будет использоваться Dovecot, то и для доставки почты в почтовые ящики теперь тоже следует использовать Dovecot. Поэтому сначала надо указать где будут хранится почтовые ящики и в каком формате. Для этого откройте файл /etc/dovecot/conf.d/10-mail.conf и измените значение параметра mail_location на следующее:

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

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

Мы будем использовать ту же папку что и раньше, только уже другой программой. Здесь %d - означает домен, а %n - имя пользователя. Далее надо настроить какие сервисы будут использоваться. В файле /etc/dovecot/conf.d/10-master.conf надо расскомментировать настройки для таких сервисов:

  • imaps - получение почты по протоколу IMAP с поддержкой SSL;
  • pop3s - получение почты по протоколу POP3 с поддержкой SSL;

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

inet_listener imaps {
port = 993
ssl = yes
}
inet_listener pop3s {
port = 995
ssl = yes
}

Найдите эти секции и приведите их к такому же виду. Далее надо включить протокол LMTP, он будет использоваться Postfix для доставки писем в почтовые ящики.

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

Ищите секцию service lmtp и приведите её к такому виду. Путь /var/spool/postfix/private/dovecot-lmtp - это сокет, на котором сервис будет ожидать подключения. Позже нам надо будет использовать его в конфигурации Postfix. И осталось настроить ещё один сокет для авторизации по SMTP:

#Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

В файле /etc/dovecot/conf.d/10-auth.conf надо включить метод авторизации plain login:

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

auth_mechanisms = plain login

Далее пролистайте в самый низ файла и закомментируйте такую строчку:

!include auth-system.conf.ext

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

!include auth-passwdfile.conf.ext

Дальше настраиваем способ получения пользователей. Для этого откройте файл /etc/dovecot/conf.d/auth-passwdfile.conf.ext и приведите его к такому виду:

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

passdb {
driver = passwd-file
args = scheme=PLAIN username_format=%u /etc/dovecot/users
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n
}

Здесь мы указываем, что пароли пользователей будут хранится в файле /etc/dovecot/users открытым текстом. Осталось создать этот файл:

sudo vi /etc/dovecot/users

admin@vps.losst.pro:{plain}password
support@losst.pro:{plain}password
info@vps.losst.pro:{plain}password

С Dovecot всё. Сертификаты SSL, настраивать не обязательно, так как во время установки программы генерируются самоподписные и на первое время их хватит.

9. Настройка Postfix для Dovecot

Поскольку теперь для доставки писем в почтовые ящики и для авторизации при отправке писем по SMTP мы будем использовать Dovecot, надо поменять несколько строк в /etc/postfix/main.cf

smtp_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Здесь private/auth - это ссылка на сокет в /var/spool/postfix, который мы создали в секции smtp-auth при конфигурации dovecot. Затем закоментируйте строки:

#virtual_mailbox_base = /home/vmail
#virtual_mailbox_maps = hash:/etc/postfix/vmaps
#virtual_minimum_uid = 1000
#virtual_uid_maps = static:5000
#virtual_gid_maps = static:5000

И вместо них добавьте:

virtual_transport = lmtp:unix:private/dovecot-lmtp

Далее откройте файл /etc/postfix/master.cf и раскомментируйте такую строчку:

submission inet n - y - - smtpd

Всё, осталось перезапустить Postfix и Dovecot:

sudo systemctl restart postfix
sudo systemctl restart dovecot

Не забудьте удалить старый почтовый ящик:

sudo rm /home/vmail/vps.losst.pro/admin

10. Тестирование доставки почты

Первым делом надо проверить доставляется ли почта в новый почтовый ящик. Для этого можно отправить тестовое письмо на admin@vps.losst.pro:

echo "Test mail" | mail -s "Test mail" admin@vps.losst.pro

После этого в папке /home/vmail/vps.losst.pro/admin/new/ должно появится новое письмо:

Если письма не появилось смотрите лог postfix:

tail -f /var/log/mail.log

У Dovecot тоже есть лог, но его надо включить. Откройте файл /etc/dovecot/conf.d/10-logging.conf и исправьте там такие строчки:

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

log_path = /var/log/dovecot.log
auth_verbose = yes

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

11. Настройка брандмауэра

Прежде чем вы сможете получить доступ к почтовому серверу из сети интернет, надо открыть несколько портов. Сначала POP3 и POP3S:

sudo ufw allow 110
sudo ufw allow 995

Потом IMAP и IMAPS:

sudo ufw allow 143
sudo ufw allow 993

А затем SMTP:

sudo ufw allow 25
sudo ufw allow 465
sudo ufw allow 587

Установка Postfix Dovecot завершена, можно переходить к тестированию.

12. Тестирование получения почты

Для получения почты по POP3 в этой статье я буду использовать клиент claws-mail. Для его на рабочем компьютере выполните:

sudo apt install claws-mail

После запуска надо будет пройти несколько шагов настройки. Сначала настройте POP3 сервер для получения почты:

Затем настройте SMTP сервер для отправки почты:

После этого вы увидите все свои письма в программе:

Выводы

В этой статье мы рассмотрели как выполняется установка Postfix Ubuntu 20.04, а также как установить и настроить Dovecot. На первый взгляд, все может показаться очень сложным, но если разобраться, то установка и настройка Postfix Dovecot вполне выполнима. Дальше вы можете установить Roundcube и пользоваться почтой. Если у вас остались вопросы, спрашивайте в комментариях!

47 комментариев к “Установка Postfix Ubuntu с Dovecot”

  1. Сам пробую настроить по этой инструкции... стоит Ubuntu 16.04

    Сразу нашел ошибку. В разделе "Настройка баз данных" указано ввести
    $ sudo mysql -u root
    У меня это не работает!!! Выдает:
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    Сработало вот что:
    $ sudo mysql -u root -p
    далее спросила пароль у пустила в командную строку
    >mysql

    идем дальше...

    Ответить
    • у автора предполагется что у пользователя mysql root нет пароля. Мне кажется, как зайти в консоль mysql вопрос немного не из области темы статьи.

      Ответить
  2. Следующая ошибка на 3 пункта ниже...
    Около часа потратил на нее!!! Эх, попадись мне сейчас автор...

    В статье указано ввести:
    > CREATE TABLE `Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;

    Работает только без апострофов!!! И последнюю директиву ENGINE=InnoDB мой MySQL вообще не понимает!!! Сработало вот что:

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

    Без апострофов и без энджин!

    идем дальше...

    Ответить
  3. Далее в разделе "Создание пользователей" указано ввести

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

    что я только не пробовал, выдает следующее:

    ERROR 1406 (22001): Data too long for column 'password' at row 1

    ВСЁ! Приплыли! Я не могу пройти дальше!!!!

    АВТОР СТАТЬИ - НА ПОМОЩЬ!!!!

    Ответить
  4. ВНИМАНИЕ ВСЕМ!!! Весь этот рецепт по настройке почты не работает!!! Не тратьте свое время на попытки настроить почту по этой статье!!! УДАЛИТЕ ЭТУ СТАТЬЮ С САЙТА, НЕ ПОЗОРЬТЕСЬ!!!

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

      Ответить
      • Вы считаете статья написана на отлично? Первые же базовые вещи НЕ РАБОТАЮТ! Да ведь и это больше похоже на инструкцию по настройке, а не на статью по основным понятиям принципа настройки почты в Убунту. Эта инструкция - НЕ РАБОТАЕТ!!! В печь её!!!

        Ответить
        • Если у Вас что-то не получается "с разбегу", то не стоит сразу тыкать в автора. Он старался!
          Лучше погуглить ошибки, которые возникают. Например с апострофами таки да, надо вникать где апостроф надо ставить, а где кавычку =)
          И еще мысля на заметку: Если инструкция написана, значит как минимум у автора она сработала. Как максимум она сработала у большинства воспользовавшегося ею. Так что сперва стоит поискать ошибки в себе, прежде чем тыкать грязным пальцем во всех окружающих и обвинять их в том, что этот мир не так устроен, как хотелось бы =)

          Ответить
  5. Не работает эта инфтрукция. Не авторизуется пользователь в довекоте так как поле в таблице пароле слишком маленькое и оно режится

    Ответить
    • Спасибо за совет, я таки авторизовался в довекоте 🙂

      измените скрипт создания таблицы
      CREATE TABLE `Users_tbl` (
      `UserId` INT NOT NULL AUTO_INCREMENT,
      `DomainId` INT NOT NULL,
      `password` VARCHAR(254) 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;

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

    Ответить
  7. Здравствуйте, а если например, вместо ручного создания таблиц, подключим Postfixadmin, ну и соотвественно к пустой базе, и он создаст свои таблицы, потом в файлах .cf, пропишу свой алгоритм подключения к базе с таблицами как в PA

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

    Ответить
  9. после

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

    Вылетает ошибка

    /usr/sbin/postconf: fatal: file /etc/postfix/master.cf: line 127: bad field count
    postfix/postfix-script: fatal: cannot execute /usr/sbin/postconf!

    ???

    Ответить
  10. Не согласен с большинством отзывов: 1.Если назвался Клизьмой, то будь добр автор уж исправить свои писульки....
    фраза а вот вы mysql не знаете, или других "основ" - тут не катит, не уверен не обгоняй! зачем пишешь то что не работает ты ж не Майкрософт!?

    Ответить
  11. Привет! Всем сработало многое, автор пишет круто, но Я застрял на postfix. Честно говоря надо быть чуть профи, чтобы разобраться, что к чему

    Ответить
  12. Добрый день настраиваю сервер в локальной сети по вашему гайду/инструкции и он не работает - конкретно проблема в том что клиент локальной сети видит сервер, но не может авторизоваться - неверная пара логин/пароль или что-то в этом духе, да и на самом сервере таже проблема.
    Возник такой вопрос - при редактировании конфигов мне нужно все закоментировать и оставить только указанные вами параметры или при внесении ваших настроек, остальное не трогать и все должно работать.
    И 2-й вопрос - а мрожно настроить без DNS у меня сервер должен работать в локальной сети не обращаясь в интернет, хотя интернет есть

    Ответить
  13. Для создание базы MySql используйте Postfixadmin он сам создает необходимые таблицы баз.По инструкции настраивать не пробовал.Но теоретически последовательность описана правильно.Конечно,огрехи в синтаксисе могут быть в статье.Для успешной настп=ройки надо более-менее знать тему MySql PHP ,ну и принципы работы Postfix Dovecit mYsQL,по отдельности и вместе

    Ответить
  14. Спасибо за статью, всё получилось!
    Единственное, пока не разобрался, там есть раздел где конфигурируется аутентификация по разным протоколам. Почему-то не получилось настроить imaps на 993 порту - thunderbird упорно отказывается к нему подключаться, хотя порт слушается.

    Ответить
  15. У меня вот какой вопрос возник - INSERT в таблицу я понял как сделать, с хешом пароля, а что делать если надо поменять пароль?

    Ответить
  16. Здравствуйте, не получается подключиться клиентом к серверу:
    dovecot:
    imap-login: Info: Disconnected (no auth attempts in 0 secs): user=, rip=xx.xx.xx.xx, lip=xxx.xxx.xxx.xxx, TLS, session=

    postfix:
    postfix/submission/smtpd[8430]: connect from unknown[xx.xx.xx.xx]
    postfix/submission/smtpd[8430]: disconnect from unknown[xx.xx.xx.xx] ehlo=2 starttls=1 quit=1 commands=4

    А thunderbird пишет, что сервер скорее всего не поддерживает шифрованные пароли. Я так понимаю, что проблема с сертификатом и его использованием, но что именно?

    Ответить
  17. Приветствую, первый раз настраивал почтовый сервер, нашел в инете эту статью, с первого раза конечно же не получилось, но после нескольких дней танцев с бубном всё удалось. В данной статье есть множество ошибок и недочетов. А может быть просто мне не повезло =)
    Поэтому хочу поделится своим опытом с остальными, дабы облегчить им жизнь =)
    1. О чем не упомянул автор, если у вас уже установлена MySQL, не нужно ставить mariadb-client mariadb-server. Так как после это у меня начались жуткие глюки, база вообще перестала работать, видать конфликты конфигов, долго пытался их подружить, но безуспешно. Лечится удалением одного из двух. Если у вас стоит mysql и вы еще не начали установку, просто не ставим mariadb.
    Команда для установки будет выглядеть так
    sudo apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql
    2. Ошибка при добавлении пользователя в бд
    ERROR 1406 (22001): Data too long for column 'password' at row 1
    Это конечно запара (опечатка) автора статьи, он указывает длину зашифрованного пароля 100 символов, чего явно не хватает. Владимир предложил 1000 ну это перебор, правильный ответ 254, о чем подсказал Andrei.
    Если вы еще не создали табличку то делаем так
    CREATE TABLE `Users_tbl` (
    `UserId` INT NOT NULL AUTO_INCREMENT,
    `DomainId` INT NOT NULL,
    `password` VARCHAR(254) 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;
    Если же она создана (что скорее всего) то лечим ее командой
    ALTER TABLE Users_tbl MODIFY password VARCHAR(254) NOT NULL;
    После чего добавляем юзеров
    3. Ошибки
    postconf: warning: ???n: unknown parameter
    postconf: warning: ???M: unknown parameter
    Возникают после выполнения команд
    sudo postconf –n
    sudo postconf –M
    соответственно
    Проблема возникает когда копируешь их и вставляешь в командную строку, лечится вводом данных команд ручками.
    4. Ошибка
    /usr/sbin/postconf: fatal: file /etc/postfix/master.cf: line 127: bad field count
    postfix/postfix-script: fatal: cannot execute /usr/sbin/postconf!
    Выше уже отписывался PODMIGOR, как ее исправить, но его совет мне не помог. Проблема в том что dovecot воспринимает команду
    dovecot unix - n n - - pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
    как разбитую на 2 строки, а должна быть 1. Лечится удалением разделителя строи, чтобы команда была одной строкой.
    dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
    5. После этого все запустилось, но письма не приходили на почту admin@domen.com вообще, а отправленные письма попадали прямиком в спам получателю.
    Вопрос со спамом решается так, правим файл /etc/postfix/main.cf
    параметр myhostname не должен быть равен всяким поддоменам типа
    myhostname = subdomen
    или
    myhostname = sub.domen.com
    или как у автора myhostname = vps
    Почтовые сервисы видят разницу между почтой и сервером и сразу в спам
    admin@domen.com sub.domen.com
    Итог корректный вариант
    myhostname = domen.com
    После чего письма начали доходить до получателей за пределами сервера
    6. У FOPMACEFT возникал вопрос по поводу конфигов, что писать, что коментить. Вот и я закоментил лишнего в файле /etc/postfix/master.cf , так как автор не упоминал о ней.
    Эта строка должна быть там обязательно, без нее SMTP не будет работать и сервак не сможет получать письма из вне.
    smtp inet n - y - - smtpd
    7. Так же нужно открыть порт 25 для SMTP
    sudo ufw allow 25
    8. Но получать письма я пока так и не смог, почтовики выдавали ошибку типа
    The mail system
    : unknown user: "admin"
    Были и похожие ошибки в логах
    postfix Recipient address rejected: User unknown in local recipient table
    Короче нет такого пользователя и всё тут, хотя в базе он есть и от него письма доходят.
    Лечится правкой файла /etc/postfix/main.cf
    Добавляем строки
    local_transport = virtual
    local_recipient_maps = $virtual_mailbox_maps
    9. После последней правки, юзера мы видим, но всё равно писем нет.
    В логах увидел такую ошибку
    server postfix/trivial-rewrite[26694]: warning: do not list domain domen.com in BOTH mydestination and virtual_mailbox_domains
    Собственно дубль домена в mydestination и virtual_mailbox_domains
    Правим уже наш любимый файл /etc/postfix/main.cf
    Удаляем из параметра mydestination всё что связывает нас с нашим доменом ($myhostname, domen.com)
    Остается примерно
    mydestination = localhost localhost.localdomain
    10. Но письма все равно не приходят, смотрю логи, а там
    pipe_command: execvp /usr/libexec/dovecot/deliver: No such file or directory
    Проверяю ручками действительно нет такого каталога, а есть он тут
    /usr/lib/dovecot/
    Правим файл /etc/postfix/master.cf
    В последней строке заменяем строку
    /usr/libexec/dovecot/deliver
    на /usr/lib/dovecot/deliver
    11. И что вы думаете работает, а хрен там. Логи ведают нам новую ошибку
    postfix/pipe[27452]: 0F59C2C1489: to=, relay=dovecot, delay=0.12, delays=0.09/0/0/0.03, dsn=4.3.0, status=deferred (temporary failure. Command output: Can't open log file /var/log/dovecot.log: Permission denied )
    Нет доступа к файлу логов довекота, ну так дадим
    chown vmail:vmail dovecot.log
    Тестим... Ура! Письма приходят и уходят. Два дня не прошли напрасно =)
    Не судите строго, никого не хочу учить, сам только учусь, просто решил поделится своим опытом, может быть кому то будет полезно, а если автор подправит свою статью учитывая мои каменты, я думаю это будет только на пользу читателям.

    Ответить
  18. Добрый день. Помогите пожалуйста разобраться.
    Связка Postfix+PostfixAdmin+Dovecot+MariaDB
    службы работают, порты отвечают
    почтовым клиентом по imap присоединяюсь
    а вот дальше, отправка почты не работает, получение тоже
    Ошибка 451 4.3.0 : Temporary lookup Failure.
    Вроде как не правильный адрес. Но адрес правильный.
    Почта не уходит как внутри сервера так и наружу…
    При попытке отправить почту из вне на мой адрес так же проблема
    all relevant MX records point to non-existent hosts

    Ответить
  19. Добрый день.
    Появилась задача организовать почтовик.
    Опыта в Linux мало, решил воспользоваться данной инструкцией.
    До 8го пункта все осилил, были некоторые вопросы, нашел ответы в сети.
    Например:
    После создания списка ящиков пользователей
    "
    $ sudo vi /etc/postfix/vmaps

    admin@vps.losst.pro vps.losst.pro/admin
    support@vps.losst.pro vps.losst.pro/support
    info@vps.losst.pro vps.losst.pro/info
    "
    Была ошибка в отсутствии файла "vmaps.db".

    Создание файла
    $ sudo postmap /etc/postfix/vmaps

    Выполнив инструкцию до конца, имеется рад проблем:
    1. Лог от dovecot по этим инструкциям не работает.
    "
    $sudo vi /etc/dovecot/conf.d/10-logging.conf

    log_path = /var/log/dovecot.log
    auth_verbose = yes
    "
    , пока не могу понять что делат.
    2. Нет доступа к почтовым ящикам, сообщение об ошибке:
    "postfix/lmtp[95898]: 5FF3A60A2E: to=, relay=none, delay=55201, delays=55201/0.01/0/0, dsn=4.4.1, status=deferred (connect to server.domain.com[private/dovecot-lmtp]: No such file or directory)"
    Хотя на диске по указанному пути они есть.
    3. Еще есть вопросы по конфигурационным файлам.

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

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

    C Dovecot совсем беда.
    надо поменять несколько строк в /etc/postfix/main.cf

    smtp_use_tls = yes
    smtp_tls_security_level = may
    smtpd_tls_security_level = may

    smtpd_sasl_auth_enable = yes
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth

    ТАМ строк с smtp и smtpd уже хватает, ЧТО ИЗ НИХ НУЖНО ЗАКОММЕНТИРОВАТЬ???

    Ответить
  21. Добрый день!
    Норм статья, все работает. Немного подправить надо.
    В строке sudo mkdir -p /home/vmail{admin,support,info} ошибка, по логике настройки правильнее указать, sudo mkdir -p /home/vmail/vps.losst.pro/{admin,support,info}
    В файле /etc/postfix/vmaps надо в конце / добавить.

    admin@vps.losst.pro vps.losst.pro/admin/
    support@vps.losst.pro vps.losst.pro/support/
    info@vps.losst.pro vps.losst.pro/info/

    Ответить
  22. Чтобы работало не надо комментировать строки:
    #virtual_mailbox_base = /home/vmail
    #virtual_mailbox_maps = hash:/etc/postfix/vmaps
    #virtual_minimum_uid = 1000
    #virtual_uid_maps = static:5000
    #virtual_gid_maps = static:5000

    Ответить

Оставьте комментарий