Exim

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

Установка

В debian есть две версии exim4-daemon-heavy (со всякими доп модулями, типа подключения к БД и прочих exigrep) и exim4-daemon-light. (Ни разу последний не пользовал, но возможно подойдёт для простых сетапов - тех же почтовых релеев.

# apt-get install exim4-daemon-heavy

Настройка

Поскольку мы не привыкли делать просто и любим оптимизировать заранее - мы будем использовать в нашем сетапе БД как бэкенд для доменов, пользователей и ящиков (так же можно использовать и LDAP, чому нет) Я постепенно переехал на postgresql, отказавшись от mariadb/mysql, но в общем и целом настройка бэкендов должна быть примерно одинаковой, так что на вкус и цвет.

БД

Нам потребуется пользователь, БД и определённое количество табличек.

postgres=# CREATE USER mailsystem PASSWORD 'h0wAb0utCreateY0ur0wnPa$$w0rd,Dude?';
postgres=# CREATE DATABASE mailsystem OWNER mailsystem;

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

CREATE TABLE domains (
  id SERIAL NOT NULL PRIMARY KEY,
  fqdn VARCHAR(250) NOT NULL,
  description TEXT NOT NULL,
  active BOOLEAN NOT NULL DEFAULT TRUE,
  created TIMESTAMP NOT NULL DEFAULT now()
 
);
 
CREATE TABLE mailboxes (
  id SERIAL NOT NULL PRIMARY KEY,
  domain_id INTEGER NOT NULL REFERENCES domains(id),
  local_part VARCHAR(127) NOT NULL,
  password VARCHAR(100) NOT NULL,
  active BOOLEAN NOT NULL DEFAULT TRUE,
  created TIMESTAMP NOT NULL DEFAULT now()
);

Конфиг