Чт. Мар 28th, 2024

Бывает, появляется надобность поднять небольшую почтовую систему на маленьком сервере.Так,чисто отправить почту от имени сайта,и принять,если что напишет.Разумеется не нужно кучи юзеров,не нужна отправка через этот сервер как через SMTP своей почты и т.д. Потому нет смысла юзать базу данных и прочие прелести и возможности.Поэтому тут я опишу как быстро построить почтовик на базе Postfix.   

UPD: 28.02.2017 — добавлено описание доп.функций и изменено описание некоторых старых

1)Для начала установим сам почтовый агент Postfix и клиент POP3:

apt-get install postfix courier-pop maildrop

все зависимости подтянутся сами. Далее на вопросы установщика Postfix отвечаем как угодно,все равно я выложу полный пример конфига.

2) Далее настраиваем /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

append_dot_mydomain = no

readme_directory = no

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = twilightspark.lan
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.twilightspark.lan, TwilightSpark.twilightspark.lan, localhost.twilightspark.lan, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a «$EXTENSION»
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
default_transport = virtual
relay_transport = virtual
home_mailbox = Maildir/
inet_protocols = ipv4
queue_directory = /var/spool/postfix
smtpd_helo_required = yes
virtual_mailbox_domains = twilightspark.lan
virtual_mailbox_base = /var/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
local_recipient_maps = $virtual_mailbox_maps

3)Создадим файл с алиасами на адреса:

nano /etc/postfix/aliases

Запишем в него:
postmaster root
И прохешируем:

postmap /etc/postfix/aliases

Создадим место для хранения почты для нашего домена(если еще нет,что врят ли):
mkdir /var/mail/

Создадим группу virtual и пользователя virtual для работы с почтовыми ящиками:
groupadd -g 5000 virtual
useradd -g virtual -u 5000 virtual

chown virtual:virtual /var/mail/
chmod 770 /var/mail/

Теперь создадим пользователя и почтовый ящик к нему(берем для примера след.данные):
Логин user
Адрес [email protected]

Создадим необходимые файлы в Postfix:
touch /etc/postfix/vmailbox
touch /etc/postfix/virtual
 

Пропишем в Postfix данные о новом почтовом ящике. Для этого в файл /etc/postfix/vmailbox допишем строку:
user@server.com user/

Создадим для примера алиас на этот почтовый ящик. Для этого в файл /etc/postfix/virtual допишем строку:
webmaster@server.com [email protected]

Прохешируем эти два файла:
postmap /etc/postfix/virtual
postmap /etc/postfix/vmailbox

Теперь нужно перезапустить Postfix:
/etc/init.d/postfix restart

 

Далее настроим courier-authdaemon что б он использовал свою базу,а не РАМ:

В /etc/courier/authdaemonrc меняем строчку на:

authmodulelist=»authuserdb»

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

userdb user set uid=vmail gid=vmail home=/home/user mail=/var/mail/user

Задаем ему пароль:

userdbpw -md5 | userdb fred set systempw

Далее обязательно захешируем нашу базу,иначе не будет работать:

makeuserdb

Перезагружаем courier-authdaemon и пробуем подключаться.

от RUSUA

12 комментариев к «Настройка Postfix «по-быстрому» без MySQL. Если требуется минимум функций.»
  1. А че такое /etc/courier/authdaemonrc у меня нету…. тогда и смысла по гайду настраивать нет

    1. Его создать надо. Это настройка для courier-authdaemon,который ставится с зависимостями courier-pop

  2. Подскажите новичку, что такое прохешируем эти два файла, захешируем? Нужно поставить символ # или // ? Но где и как не понятно?

    1. Прохешируем эти два файла:
      postmap /etc/postfix/virtual
      postmap /etc/postfix/vmailbox

      Тут имеется ввиду не использование символов хеша #, а запуск специальной программы postmap которая по своему алгоритму прохеширует файлы vmailbox & virtual. В данном случае можно сказать что хеширование — это просто перевод текстового файла в двоичный по определенному алгоритму,понятному программе.
      Само собой никаких символов нигде ставить не надо.Просто запустить программу postmap и задать ей имя файла в качестве параметра.

  3. Добрый день, пишите

    Теперь создадим пользователя и почтовый ящик к нему(берем для примера след.данные):
    Логин user
    Адрес [email protected]

    а самого создания пользователя нет, только о почтовом ящике

    1. Все верно.Слово «берем» тут используется в смысле что берем для примера создания нового пользователя такое-то имя.
      А дальше как раз описано как мы его создаем.

  4. Добрый день, подскажите, стоит centOS 6 при создании пользователя пишет нет такой команды «userdb user set uid=vmail gid=vmail home=/home/user mail=/var/mail/user».
    Нужно добавить что-то ?

  5. Хорошая статейка, полезная.
    А я правильно понимаю что вы используете только виртуальных пользователей для почты? Или локальных тоже, и как тогда локальных пользователь посмотреть почту, ибо как я вижу вы используете локального пользователя root?

    1. Да,тут используются виртуальные и для привязки к реальным юзерам надо вручную добавлять их в виртуальные.
      Хотя особо проблем не добавляет.А когда много пользователей то через MySQL + PostfixAdmin решается

  6. И мне кажется или вот тут
    smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
    должно быть вот так
    smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination

    1. Нет,там все верно. В перечислении параметров после smtpd_relay_restrictions = используются пробелы для разделения. Просто тут они описываются с новой строки каждый что б удобнее читать было. Можно после = их все в строку указать. Так точно в официальных мануалах по постфиксу.
      Кста,через запятые тоже должно работать)

Добавить комментарий для Михаил Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Анти-спам: выполните заданиеWordPress CAPTCHA