Blog the XELFAER

Заметки *NIX

Настройка почтового сервера: Postfix+Dovecot+MySQL+SASL в Debian 7 Wheezy —

Наверное каждый когда то задумывался о своем почтовом сервере. Если есть возможность то почему бы его не реализовать. Поднимать будем почтовый сервер в связке Postfix+Dovecot+MySQL+SASL.
Стоит упомянуть почему выбрана данная связка. Postfix более безопасен и работает более шустрее по сравнению с тем же SendMail. Dovecot выбран ибо у него дыр поменьше по сравнению с Cyrus IMAP, с ним меньше проблем при обслуживании, дает меньшую нагрузку на сервер, лучше реализован Greylisting для антиспама. Выбрано хранение данных в БД MySQL — ибо это очень удобно и просто обслуживать. SASL — куда в наше время без безопасности.

Начнем как обычно с обновления репозитория:

# aptitude update

Установим необходимые пакеты:
для MySQL:

# aptitude install mysql-client mysql-server

для Postfix:

# aptitude install postfix postfix-mysql postfix-doc

во время установки пакета Postfix будет выведено диалоговое окно выбора конфигурации, где необходимо выбрать пункт «Без настройки»:

Диалоговое окно выбора конфигурации

Диалоговое окно выбора конфигурации

для Dovecot ставим пакеты:

# aptitude install dovecot-common dovecot-imapd

для SASL:

# aptitude install libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin

и напоследок поставим:

# aptitude install libpam-mysql openssl telnet bsd-mailx

Стоит сразу упомянуть важный нюанс. В Debian 7 используется уже Dovecot v2.1.7, поэтому если есть конфиг более ранней версии — то его необходимо будет изменять, так как на новой версии он однозначно не заведется.
Для автоматического конвертирования конфига из ранней версии в позднюю есть утилита doveconf.
Используют ее следующим образом:

# doveconf -n -c /etc/dovecot/dovecot.conf > /etc/dovecot/dovecot-2.conf

После выполнения конвертирования стоит внимательно посмотреть что выплюнет консоль, ибо в ней 99% будет выведена информация для решения проблемы и помощи в поднятии до рабочего состояния нового конфига.

Также стоит упомянуть что в Dovecote2 изменилась настройка файлов конфигурации. Для облегчения настройки(мало вериться ^_^) файл конфигурации был разбит на отдельные файлы(не так как раньше все в одном файле), хотя возможность использовать все настройки прописывая в одном файле сохранилась.

Запасаемся кофе, сигаретами (кому что…) и приступаем…

Настройка MySQL.
Для начала необходимо создать БД для для почтового сервера Postfix, для этого подключаемся к MySQL:

# mysql -u root -p

вводим пароль(он при вводе не отображается) и в случае удачного входа увидим что то наподобие:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 498
Server version: 5.5.33-0+wheezy1 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Теперь можно создать БД:

CREATE DATABASE mail;

на что нам должно в консоли отрапортовать что то наподобие такого:

Query OK, 1 row affected (0.00 sec)

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

USE mail;

Для дальнейшей настройки необходимо придумать логин и пароль который будет использоваться в почте для настройки файлов конфигурации(соответственно mail_admin и mail_admin_password необходимо изменить на свое).

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;

Теперь необходимо создать таблицы в нашей БД.
Таблица для хранения виртуальных доменов(в ней будет храниться информация о всех доменах которые будут обслуживаться):

CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY(domain));

Таблица в которой будет храниться информация о пересылке писем между почтовыми ящиками(другими словами перенаправление писем с одного почтового ящика на другой):

CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY(source));

Таблица для хранения почтовых аккаунтов:

CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY(email));

На этом работа пока с MySQL закончена.

Для проверки, что MySQL связана с localhost необходимо выполнить:

# cat /etc/mysql/my.cnf |grep bind

на что мы должны получить:

bind-address = 127.0.0.1

если адрес отличается — это необходимо учесть при настройке конфигов в дальнейшем.

Далее необходимо настроить работу Postfix с MySQL, тобиш дать ему понять откуда черпать данные.
Создадим отдельно каталог mysqlconf в /etc/postfix/ для хранения наших будущих файлов конфигурации:

# mkdir /etc/postfix/mysqlconf

Далее создаем файлы конфигурации с указанным содержимым.
Файл конфигурации для виртуальных доменов /etc/postfix/mysqlconf/virtual_domains.cf:

user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain = '%s'
hosts = 127.0.0.1

Файл конфигурации для перенаправления почты с почтовых ящиков /etc/postfix/mysqlconf/virtual_forwardings.cf:

user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT destination FROM forwardings WHERE source = '%s'
hosts = 127.0.0.1

Файл конфигурации для почтовых аккаунтов /etc/postfix/mysqlconf/virtual_mailboxes.cf:

user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT CONCAT( SUBSTRING_INDEX(email, '@', -1), '/' , SUBSTRING_INDEX(email, '@', 1), '/' ) FROM users WHERE email = '%s'
hosts = 127.0.0.1

Файл конфигурации для отображения почты /etc/postfix/mysqlconf/virtual_email2email.cf:

user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT email FROM users WHERE email = '%s'
hosts = 127.0.0.1

Установим права и владельца для созданных файлов:

# chmod o= /etc/postfix/mysqlconf/virtual_*.cf
# chgrp postfix /etc/postfix/mysqlconf/virtual_*.cf

Добавим группу с пользователем для хранения/передачи почты:

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

Настройка Postfix.
Скопируем файл конфигурации:

# cp /usr/lib/postfix/main.cf /etc/postfix/main.cf

и приступаем к его наполнению:

# Хост
myhostname = xelfaer.ru
#myorigin = /etc/mailname
mydestination = localhost. localhost.localdomain
#relayhost =
mynetworks = 127.0.0.0/8
# Размерь почтового ящика (0 - неограничено)
mailbox_size_limit = 0
#recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
# Текст приветственного баннера, который отображается после кода состояния 220 в SMTP
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

# TLS конфигурация
smtpd_use_tls = yes
smtpd_tls_cert_file=/etc/postfix/certificate/smtpd.pem
smtpd_tls_key_file=/etc/postfix/certificate/smtpd.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_loglevel = 0
smtpd_tls_received_header = yes

# MySQL конфигурация
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysqlconf/virtual_forwardings.cf, mysql:/etc/postfix/mysqlconf/virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysqlconf/virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysqlconf/virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

# SASL конфигурация
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes

# Настройка ограничений SMTPD
smtpd_delay_reject = yes

smtpd_client_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    permit

smtpd_helo_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname,
    permit

smtpd_sender_restrictions =
    permit_mynetworks,
    reject_non_fqdn_sender,
    permit_sasl_authenticated,
    permit

smtpd_recipient_restrictions =
    reject_non_fqdn_recipient,
    reject_unknown_recipient_domain,
    reject_unlisted_recipient,
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unknown_sender_domain,
    reject_rbl_client sbl.spamhaus.org,
    reject_rbl_client dnsbl-1.uceprotect.net,
    reject_rbl_client dnsbl.sorbs.net,
    reject_rbl_client ix.dnsbl.manitu.net,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client access.redhawk.org,
    reject_rbl_client bl.deadbeef.com,
    reject_rbl_client dnsbl.cyberlogic.net,
    reject_rbl_client dul.ru,
    reject_rbl_client korea.services.net,
    reject_unknown_client_hostname,
    reject_unauth_pipelining,
    reject_unauth_destination,
    permit

smtpd_data_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_pipelining,
    permit

smtpd_end_of_data_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_multi_recipient_bounce,
    permit

#
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
virtual_transport = dovecot

# Алиасы
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

Далее приступаем к генерированию SSL сертификатов для Postfix:

# openssl req -new -outform PEM -out smtpd.pem -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509

вводим запрашиваемые данные и у нас появятся 2 файла.

Установим права доступа для созданного файла ключа:

# chmod o= /etc/postfix/certificate/smtpd.key

Настраиваем совместную работу Saslauthd c MySQL для Postfix.
Создадим каталог для Saslauthd:

# mkdir -p /var/spool/postfix/var/run/saslauthd

Создадим резервную копию файла конфигурации:

# cp -a /etc/default/saslauthd /etc/default/saslauthd.backup

и можно приступить к редактированию конфига, который приводим к такому виду:

START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Далее создадим файл для smtp:

# touch /etc/pam.d/smtp

и внесем следующее содержимое:

auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

где необходимо заменить вместо mail_admin и mail_admin_password свои значения использовавшиеся выше.

Создаем файл конфигурации smtpd.conf:

# touch /etc/postfix/sasl/smtpd.conf

и вносим содержимое:

pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd: mail_admin_password
sql_database: mail
sql_select: SELECT password FROM users WHERE email = '%u'

где также необходимо заменить вместо mail_admin и mail_admin_password свои значения использовавшиеся выше.

Теперь необходимо установить права на созданные файлы:

# chmod o= /etc/pam.d/smtp
# chmod o= /etc/postfix/sasl/smtpd.conf

и добавить пользователя postfix в группу sasl:

# adduser postfix sasl

Теперь необходимо перезапустить сервисы postfix и saslauthd:

# /etc/init.d/postfix restart
# /etc/init.d/saslauthd restart

Ошибок возникнуть после перезапуска сервисов не должно.

Настройка Dovecot.
Создаем резервную копию конфига:

# cp /etc/postfix/master.cf /etc/postfix/master.cf_backup

и начинаем править master.cf добавляя в конце конфига:

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

Делаем резервную копию dovecot.conf:

# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf_backup

и заменяем все содержимое файла конфига на ниже приведенный код:

# Dovecote configuration file
protocols = imap
listen = *
shutdown_clients = yes
mail_uid = vmail
mail_gid = vmail
first_valid_uid = 5000
last_valid_uid = 5000

# Log files
log_path = /var/log/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "

# SSL
ssl_cert = </etc/dovecot/certificate/dovecot.pem
ssl_key = </etc/dovecot/certificate/dovecot.key

# Расположение и формат файлов почты (%d - домен, %n - имя пользователя)
mail_location = maildir:/home/vmail/%d/%n

protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  log_path = /home/vmail/dovecot-deliver.log
  mail_plugins = sieve
  postmaster_address = postmaster@example.com
}

namespace {
  inbox = yes
  location =
  prefix = INBOX.
  separator = .
}

passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-master {
    mode = 0600
    user = vmail
  }
  user = root
}

userdb {
  args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
  driver = static
}

где необходимо изменить адрес postmaster@example.com на свой.

Далее создаем dovecot-sql.conf из файла dovecot-sql.conf.ext

# cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf

и заменяем содержимое на:

driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail_admin password=mail_admin_password
default_pass_scheme = CRYPT
password_query = SELECT email AS user, password FROM users WHERE email = '%u'

где необходимо также поменять mail_admin и mail_admin_password на свои.
Создадим каталог для сертификатов Dovecot:

# mkdir /etc/dovecot/certificate

Далее приступаем к генерированию SSL сертификатов для Dovecot:

# openssl req -new -outform PEM -out dovecot.pem -newkey rsa:2048 -nodes -keyout dovecot.key -keyform PEM -days 365 -x509

вводим запрашиваемые данные и у нас появятся 2 файла.
Установим права доступа для созданного файла ключа:

# chmod o= /etc/dovecot/certificate/dovecot.key

Перезапускаем сервис dovecot:

# /etc/init.d/dovecot restart

Устанавливаем права и владельца на созданные файлы конфигурации:

# chgrp vmail /etc/dovecot/dovecot.conf
# chmod g+r /etc/dovecot/dovecot.conf

Настройка почтовых алиасов.
Для настройки почтовых алиасов необходимо отредактировать файл /etc/aliases. Нас интересует две строки:

postmaster: root
root: postmaster@example.com

где меняем адрес postmaster@example.com на желаемый. Сохраняем изменения и применяем изменения:

# newaliases

Теперь перезагружаем сервисы Postfix, Saslauthd, Dovecot:

# /etc/init.d/postfix restart
# /etc/init.d/saslauthd restart
# /etc/init.d/dovecot restart

Теперь можно проверить работу IMAP сервера и для этого воспользуемся telnet:

telnet localhost 25

на что нам должно выдать сообщение:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xelfaer.ru ESMTP Postfix (Debian/GNU)

далее необходимо убедиться в наличии 250-STARTTLS

ehlo localhost

на что выдаст что то наподобие:

250-xelfaer.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Для выхода необходимо ввести команду quit.
Если нашли указанную строку — все в порядке и можно идти дальше.

Теперь можно приступить к заполнению БД MySQL.

Предварительно сделаем резервную копию наше пустой БД:

# mysqldump --add-drop-table -h localhost name_database | bzip2 -c > `date +%F`_name_database.sql.bz2

где вместо name_database указываем наше имя БД MySQL.

Для начала необходимо внести домен. Так как домен будет использоваться только одни, вносим соответственно тоже один:
входим в MySQL:

mysql -u root -p

выбираем нашу БД:

USE mail;

вносим наш домен:

INSERT INTO domains (domain) VALUES ('xelfaer.ru');

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

INSERT INTO users (email, password) VALUES ('test@xelfaer.ru', ENCRYPT('password'));

Теперь необходимо проверить работу отправки сообщения на созданный аккаунт, для этого воспользуемся программой mailx из пакета bsd-mailx:

mailx test@xelfaer.ru

где изменяем аккаунт на свой.
вводим тему сообщения, нажимаем Enter и вводим текст сообщения после чего нажимаем комбинацию Ctrl+D. Поле «СС» оставляем пустым.
Теперь смотрим файл логов на предмет ошибок и прочего:

Jan 19 01:29:21 user postfix/pickup[7933]: 444AF3F130: uid=1000 from=<userpc>
Jan 19 01:29:21 user postfix/cleanup[7944]: 444AF3F130: message-id=&lt;20140118232921.444AF3F130@xelfaer.ru>
Jan 19 01:29:21 user postfix/qmgr[7113]: 444AF3F130: from=<>, size=292, nrcpt=1 (queue active)
an 19 01:29:21 user postfix/pipe[7949]: 444AF3F130: to=<test@xelfaer.ru>, relay=dovecot, delay=0.32, delays=0.12/0.01/0/0.19, dsn=2.0.0, status=sent (delivered via dovecot service)
Jan 19 01:29:21 user postfix/qmgr[7113]: 444AF3F130: removed

заодно смотрим файл логов Dovecot в /home/vmail/dovecot-deliver.log:

2014-01-19 01:29:21 lda(test@xelfaer.ru): Info: msgid=&lt;20140118232921.444AF3F130@xelfaer.ru>: saved mail to INBOX

Ошибок нет. Письмо тестовое успешно отправлено и доставлено.

Настройка переадресации почты.
Для переадресации почты мы изначально создавали конфиг virtual_forwardings.cf с таблицей в MySQL, теперь только осталось заполнить БД данными для требуемых пользователей.

Настроим переадресацию почты с пользователя root на нашего созданного пользователя test@xelfaer.ru(не забываем менять данные на свои):

mysql -u root -p
USE mail;
INSERT INTO forwardings (source, destination) VALUES ('root@xelfaer.ru', 'test@xelfaer.ru');
quit

Теперь можно протестировать перенаправление почты с одного пользователя на другого.
На этом настройка MTA закончена. Можно прикрутить SpamAssassin, ClamAV, Roundcube но это уже дело вкуса и по надобности.

© 2014 — 2015, XELFAER. Все права защищены. Использование материалов блога разрешается только при указании активной ссылки на статью.

Print Friendly

Рубрики: Linux | Soft


комментариев 229

  1. w0md:

    А как почтовые клиенты настроить? ) порты какие?

    • настройка будет иметь вид(как в примере для указанного пользователя):
      Имя пользователя: test@xelfaer.ru
      Имя сервера: xelfaer.ru
      порт: для SMTP — 25 (сервер исходящей почты), а для IMAP — 143
      Защита соединения: STARTTLS
      Метод аутентификации: Обычный пароль

  2. maria__k:

    Добрый день, на этапе формивания SSL сертификатов и в постфикс и в довекоте проблемы. Подскажите ЧТО ИМЕННО вводить после команды «openssl и так далее» в полях Counry, Name и т.п.,что бы не писала ,видимо неверно. Во первых, Пока я вручную не создала папку certificate файлы smtpd.key не появились. Во-вторых, Назначить права доступа не дал и при рестарте довекота пишет «Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 15: ssl_cert: Can’t open file /etc/dovecot/certificate/dovecot.pem: No such file or directory» я так понимаю он не может найти эти сертификаты (хотя в этих папках они присутствуют). Автор,помоги разобраться((( уже второй день мучаюсь с этой ошибкой сертификатов.

    • При генерировании сертификатов не так важно что там вносится, так как это информация которая будет выводиться при просмотре сертификата, по желанию просто внесите достоверную информацию(на валидность эти данные не проверяются). Каталог certificate необходимо создать. Права вы назначаете из по root? Покажите ваши конфиги postfix и dovecot.

      • maria__k:

        Спасибо за ответ. Конфиги пришлю завтра утром,сразу как буду на работе. Если можно объясните,почему при назначении прав мы выставляем «chmod o=» ведь «o» обозначает «всё запрещено» или я путаю? и почему тогда мы НЕ назначаем права на файл dovecot.pem а только на dovecot.key? И на папку certificate не нужно? Спасибо

        • maria__k:

          Автор,я тебя очень прошу, пожалуйста, исправь в своем конфиге /etc/postfix/main.cf перед в строчках
          «smtpd_tls_cert_file=/etc/postfix/certificate/smtpd.pem
          smtpd_tls_key_file=/etc/postfix/certificate/smtpd.key» после равно нужно поставить знак «<" ,то бишь вот так:
          "smtpd_tls_cert_file = </etc/postfix/certificate/smtpd.pem
          "smtpd_tls_key_file = </etc/postfix/certificate/smtpd.key", чтобы другие не мучались также как я по 5 дней над этим довекотом,потому что всё дело в этой скобочке,ибо в Вашем файле dovecot они стоят а в постфиксе нет,а они,если я не ошибаюсь, означают включение ВСЕГО этого пути (до этих ключей) активным.

          • в конфиге postfix для сертификатов указан верный путь и пишется в данном случае:
            smtpd_tls_cert_file=/etc/postfix/certificate/smtpd.pem
            smtpd_tls_key_file=/etc/postfix/certificate/smtpd.key
            в Вашем случае была ошибка для dovecot. Если Вы сравните конфиги dovecot и dovecot2 то сразу заметите разницу в прописи пути для сертификатов.

        • «chmod o=» — это значит что мы выдает права для класса others(не владелец и не группа-владелец).
          Права для файла *.key мы устанавливаем из соображений безопасности так как данный файл содержит приватный сертификационный ключ, который необходимо защитить, и если он попадет в чужие руки то может быть использован для подделки сертификата.
          На каталог certificate устанавливаются права как и на родительский каталог.

  3. maria__k:

    И процедуру генерирования сертификатов «openssl req -new» и так далее нужно проводить находясь в каталоге » /certificate/»

  4. Baton:

    Добрый день.
    Уважаемый автор спасибо за статью очень полезная, постфикс заработал, только хотел еще у Вас уточнить не подскажите как прикрутить к нему ip rotation что бы распределить равномерно потоки на каждый ip

    • Вопрос достаточно интересный. Для реализации правда понадобится iptables.
      Попробуйте сначала создать aliases интерфейса для общих IP адресов. Для примера можно взять 3 IP адреса:
      # ifup eth0:1
      # ifup eth0:2
      # ifup eth0:3

      Далее:
      # iptables -m statistic -h
      на что нам выдаст что то наподобие(вывод урезан):
      iptables v1.4.14


      statistic match options:
      —mode mode Match mode (random, nth)
      random mode:
      [!] —probability p Probability
      nth mode:
      [!] —every n Match every nth packet
      —packet p Initial counter value (0 <= p <= n-1, default 0) Теперь необходимо настроить правила для iptables: # iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 25 -o eth0 -m statistic --mode nth --every 3 -j SNAT --to-source 5.xxx.xxx.2 # iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 25 -o eth0 -m statistic --mode nth --every 3 -j SNAT --to-source 5.xxx.xxx.3 # iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 25 -o eth0 -m statistic --mode nth --every 3 -j SNAT --to-source 5.xxx.xxx.4

      • Baton:

        Столкнулся с такой проблемой у меня не eth0, а venet0, когда пробую прописать туже команду но с заменой eth0 на venet0 : iptables -t nat -I POSTROUTING -m state —state NEW -p tcp —dport 25 -o venet0 -m statistic —mode nth —every 3 -j SNAT —to-source хх.ххх.ххх.хх4
        Выдает ошибку : Bad argument `NEW’

  5. Baton:

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

  6. cianoid:

    Спасибо за статью, помогла.

    А не могли бы вы показать пример, как можно настроить один сервер для отправки/получения почты с разных доменов?

  7. Baton:

    Ввожу: iptables -t nat -I POSTROUTING -m state —state NEW -p tcp —dport 25 -o venet0 -m statistic —mode nth —every 6 -j SNAT —to-source ххх.ххх.ххх.ххх

    Теперь пишет вот так:
    iptables v1.4.14: statistic: option «—every» also requires «—packet».

  8. cianoid:

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

  9. kostya:

    статья хорошая
    но теперь вопрос от полного чайника в линуксе…
    как заставить данную связку принимать почту от зарегистрированных в мускуле почтовых ящиков изве локальной сети???
    если я пытаюсь из внешней сети почтовым клиентом отправить письмо, то получаю отлуп в виде:
    ‘aaa@1.ua’ 02.06.2014 7:22
    554 5.7.1 : Relay access denied

    ногами не бить ))) всего пару недель как вобще познакомился с юниксом )))

    • MX и PTR запись покажите + postconf -n

      • kostya:

        спс, сори за беспокойство, видимо где-то что-то нахомутал…, при повторной перенастройке все заработало
        но есть еще вопрос: нарыл подобный мануал в котором еще была использована таблица транспортировки
        mysql>CREATE TABLE transport ( domain varchar(128) NOT NULL default », transport varchar(128) NOT NULL default », UNIQUE KEY domain (domain) );

        может подскажете ее назначение?

      • kostya:

        и еще одно но…
        в подобном же мануале есть два небольших различия…
        1. GRANT SELECT, INSERT, UPDATE, DELETE ON mail. * TO ‘mail_admin’@’localhost’ IDENTIFIED BY ‘mail_admin_password’
        в подобном мануале mail.*
        имеет ли значение наличие пробела?

        2. в файле main.cf
        mydestination = localhost. localhost.localdomain
        в подобном мануале
        mydestination = xelfaer.ru, localhost, localhost.localdomain
        имеет ли значение наличие воменного имени, а также имеет ли значение точка или запятая после localhost

        • Пробел оказывает действие на читабельность запроса. Если Вы предполагаете использовать почтовый сервер только внутри сети, то домен регистрировать не нужно(если я правильно понял вопрос). Через запятую Вы перечисляете список доменов.

  10. Baton:

    Всем привет, не подскажите как хранить письма не в папках, а в mysql, и вручную можно было бы туда письма добавлять?

  11. atsybulin:

    Спасибо. Хорошая статья. Все настроил по ней, и вроде все работает (тесты проходят). Но не приходят письма из вне. Пробовал настроить MX-запись в настройках домена. DNS у меня на namecheap.com. Подскажите, что я делаю не так?
    Почтовый сервер находится дома за роутером. Какие порты нужно пробрасывать чтобы не использовать DMZ?

  12. atsybulin:

    Прикрутил roundcube на gninx-е. Входящие письма вижу, а вот отправить на внешние ящики не получается ни из roundcube, ни mailx-ом. На тесте попробовал локальный ящик набрать, тогда все работало. А с внешними не получается.

    • До установки RoundCube отправка работала? Что пишется в логах при попытке отправить письмо адресату?

      • atsybulin:

        До установки я проверил только на локальном адресе. Отправка-прием сработали и я успокоился. Где смотреть логи? В /var/log/ ничего не нахожу, наверное их включить нужно, но где?

        • postfix:

          /var/log/mail.log

          dovecot:

          /var/log/dovecot.log
          /home/vmail/dovecot-deliver.log

          если читали статью то там это написано.

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

          • atsybulin:

            В /var/log не создается ни mail.log, ни maillog. Где-то прочитал, что нужно создать самому, но и так туда ничего не добавляется. Как же мне его включить?

          • Какой дистрибутив установлен? Его создавать самому ненужно. Есть предположение, что лог пишется в syslog. Проверьте /etc/syslog.conf, найдите в нем все касательно mail и проверьте куда он их пишет.

  13. witacao:

    Приветствую!
    Возник ряд вопросов, подскажите, пожалуйста.
    Всё сделал так, как описано, но…. когда пишу команд mailx адрес — тишина, в логах пусто, непонятно ушло что куда или нет. Но это как бы вторично, а вот основные проблемы:
    — не получается отправить файл с клиентской почты(The Bat): Temporary lookup failure
    — Как сделать рабочим протокол РОР3? По IMAPу проходит соединение и на этом всё заканчивается, да и мне более по душе старый-добрый РОР3 🙂
    Спасибо.

  14. witacao:

    К сожалению, нет возможности редкатировать свой пост, поэтому приходится писать новый…
    Я разобрался как подключать РОР3 и подключил его. По telnet’у отрабатывается 110 порт без вопросов и появляется приветственная строка Devcon. НО! Почта не приходит — соединение Бата, Аутглюка происходит, но письма нет. Далее, про отправку. Не работает в принципе, вот такой лог получается при отправке:

    >20.09.2014, 19:50:44: FETCH — Свойства сертификата: F9ABEBDC49334CBA, алгоритм: RSA (2048 бит), Действителен с: 20.09.2014 14:12:07, по: 20.09.2015 14:12:07, на хосты в кол-ве 1 шт.: test.ddns.net.
    >20.09.2014, 19:50:44: FETCH — Владелец: RU, Russia, Test, AAA, IT, test.ddns.net, test@hotbox.ru.
    >20.09.2014, 19:50:44: FETCH — Этот сертификат выдан самим собой.
    20.09.2014, 19:50:44: FETCH — Приветствие TLS завершено
    20.09.2014, 19:50:44: FETCH — Соединение с POP3 сервером прошло удачно
    20.09.2014, 19:50:45: FETCH — Аутентификация прошла успешно (Обычный метод)
    20.09.2014, 19:50:45: SEND — Отправка почты — писем в очереди: 1
    20.09.2014, 19:50:45: FETCH — Соединение завершено — получено писем: 0
    20.09.2014, 19:50:45: SEND — Соединение с SMTP сервером прошло удачно
    20.09.2014, 19:50:45: SEND — Отправка письма для test@test.ddns.net
    20.09.2014, 19:50:45: SEND — Последний переданный адрес получателя был
    !20.09.2014, 19:50:45: SEND — Письмо не отправлено. Сервер сообщает: 5.5.2 : Helo command rejected: need fully-qualified hostname
    20.09.2014, 19:50:45: SEND — Соединение завершено — отправлено писем: 0

    Воооот. Если не сложно, разъясните пжлста, что и где нужно исправить или подправить. До это момента не доводилось под линуксом что-либо поднимать, только как обычный юзер, без всякого компилирования и т.п. 🙂

    • Если делали все как в статье — проблем быть не должно. Для начала выложите конфиг postfix и dovecot. Также необходимо приложить выхлоп логов:
      /var/log/mail.log
      /var/log/dovecot.log
      /home/vmail/dovecot-deliver.log

      • witacao:

        Спасибо за ответ 🙂
        Вчера вечером наконец-то решил вопрос, в итоге долгого «гугления» получился файл конфигурации(main.cf) несколько отличный от вашего и напоследок пришлось указать chmod 777 /home/vmail/dovecot-deliver.log . После этого запустилось и корректно нынче работает, что по SMTP, что по РОР3.
        А за статью — спасибо.
        P.S. Было бы здорово, если бы вы её дополнили PostFixAdmin’ом (чтобы не фильтровать «воду» в поисковиках) и почтовым веб клиентом(запамятовал название, но натыкался в процессе поисков). Тогда была бы отличная, полная статья по поднятию почтового сервера 🙂

        • Здорово что получилось. Для данного файла лога достаточного указать права 600 и указать владельца и группу правильную. Относительно PostFixAdmin: его конечно можно прикрутить, но для небольшого проекта его нет смысла ставить, а вот когда вы поддерживаете небольшое предприятие с количеством юзеров более 30 — тогда да.

  15. Daemon.XP:

    Вроде как все делал по инструкции, но
    root@lgw:~# telnet localhost 25
    Trying ::1…
    Trying 127.0.0.1…
    telnet: Unable to connect to remote host: Connection timed out

  16. HiT0k:

    В чем может быть проблема, если почта уходит/приходит по логам, а в почтовом клиенте (Outlook 2013) во входящие ничего не падает? по логам все норм:
    2014-10-07 11:46:42 lda(test2@vm7566.vps.agava.net): Info: msgid=: saved mail to INBOX
    2014-10-07 11:49:47 lda(hit0k@vm7566.vps.agava.net): Info: msgid=: saved mail to INBOX
    2014-10-07 12:00:36 lda(hit0k@vm7566.vps.agava.net): Info: msgid=unspecified: saved mail to INBOX
    2014-10-07 12:01:31 lda(hit0k@vm7566.vps.agava.net): Info: msgid=: saved mail to INBOX
    2014-10-07 12:09:53 lda(hit0k@vm7566.vps.agava.net): Info: msgid=: saved mail to INBOX

  17. jey:

    У меня тоже не может подключить, выдает:
    root@ldr:~# telnet localhost 25
    Trying ::1…
    Trying 127.0.0.1…
    telnet: Unable to connect to remote host: Connection refused

    Содержимое файла /etc/hosts таково:
    127.0.0.1 localhost
    156.245.267.36 ldr.sthos.ru ldr

    # The following lines are desirable for IPv6 capable hosts
    ::1 localhost ip6-localhost ip6-loopback
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

    В чем может быть проблема? Старался все точно выполнять по Вашему описанию…

    • Проверьте открыт ли 25 порт.

      • jey:

        Проверил командой netstat -tnlp
        выдало:
        Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
        tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN /dovecot
        tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN /master
        Вроде как открыт, 25 и 143… получается что если локально на 25 работает, а на удаленный компьютер нет (пробовал на другие серверы на 25 удаленно работают) , тогда дело где то в настройках хоста? Факрыол так же отключил…вроде ничего уже не может блокировать 25 порт…

        • jey:

          Подскажите, как перенастроить SMTP на порт 2525? Пробовал другой человек подключаться к 25 порту, у него вышло, возможно мой провайдер не дает подключение на 25 порт…

  18. jey:

    Ошибка найдена… перепутал директорию конфиг файла postfix… Спасибо, хорошая статья!

  19. jey:

    Возникла следующая проблема… В консоли ssh по команде telnet localhost 25 подключается, а с удаленного компьютера по команде telnet (сурвер) 25 не срабатывает соединение, по порту 143 работает с удаленного компьютера, а по 25 никак не хочет, в чем может быть причина?

    И еще по команде проверки ehlo localhost пишет такой команды ehlo, почему так?

  20. jey:

    добавлю еще…фаервол отключен. По команде ehlo localhost пишет, нет команды ehlo

  21. HiT0k:

    Чтобы почтовый сервер корректно работал, обязательно ли в домене должна быть MX запись?

  22. AlexSem:

    Спасибо большое за статью) Вы мне очень помогли, всё заработало:)

  23. AlexSem:

    Письма отправляются. Но вот из внешки на сервер письма не приходят. Возможно MX запись нужно где-то прописать, настроить DNS, на самом сервере, где-то в конфигах. А может быть на хостинге, где мой сервер стоит.

    Сам сервер стоит на VDS, вот я и завис, MX запись должен я в конфиге где-то прописывать, или провайдер хостинга должен настраивать DNS зону, или и я должен прописать и провайдер.

    При попытке отправить, приходит такой ответ,

    This is the mail system at host lianail.com.

    I’m sorry to have to inform you that your message could not
    be delivered to one or more recipients. It’s attached below.

    For further assistance, please send mail to postmaster.

    If you do so, please include this problem report. You can
    delete your own text from the attached returned message.

    The mail system

    : User unknown in virtual alias table

    Final-Recipient: rfc822; asemenenko@lianail.com
    Original-Recipient: rfc822;asemenenko@lianail.com
    Action: failed
    Status: 5.0.0
    Diagnostic-Code: X-Postfix; User unknown in virtual alias table

  24. gpoghosyan:

    Добрый день, тема актуальна ? есть один вопросик

  25. mult-tg-golova:

    Здравствуйте, вопрос по первичной настройке mysql, а именно — на шаге, где набираю команду CREATE DATABASE mail, мне не приходит никакого ответа в консоли, она как будто что-то обрабатывает т.к. команда help тоже ничего не показывает, но длится это уже долго. При нажатии ctrl+c пишет что что-то там aborted. На что посоветуете обратить внимание?

  26. yuk:

    Ошибка у меня постоянно вылетает, так понимаю из-за файла main.cf
    postmulti: warning: valid_hostname: invalid character 32(decimal): xelfaer.ru mydestination = localhost. localhost.localdomain mynetworks = 127.0.0.0/8
    postmulti: fatal: file /etc/postfix/main.cf: parameter myhostname: bad parameter value: xelfaer.ru mydestination = localhost. localhost.localdomain mynetworks = 127.0.0.0/8

    его нужно заполнить тем что ты указываешь или то что там есть тоже оставить ?
    пробовал и так и так если оставляю то что там есть первоначально то выпадает ошибка на какие-то пункты которые у тебя не описаны и я их не заполняю. в чем я ошибся?

  27. Здравствуйте. Добрался до telnet localhost 25 и всё!
    Долго думает потом выдает Connection closed by foreign host. Сначала в логах писалось про отсутствие плагина sieve, установил. Теперь что то не так с драйвером mysql и параметр virtual_mailbox_limit_maps. Тут логи https://yadi.sk/d/5OtYBu-ogQ9SR

    • По поводу «драйвера mysql» — до установите пакет dovecot-mysql. Устанавливаем, перезапускаем, смотрим логи. Необходимо приложить конфиги /etc/postfix/main.cf и /etc/dovecot/dovecot.conf. Так же необходимо проверить открыт ли 25 порт.

      • После установки пакета dovecot-mysql все начало работать. Это наверно косяки Debian-8? В январе на седьмой ставил, было без проблем. Тут пришлось устанавливать дополнительно sieve и dovecot-mysql. Я так думаю, это должно ставиться автоматом? На всякий случай логи и конфиги https://yadi.sk/d/5OtYBu-ogQ9SR

  28. neploho:

    День добрый. После обновления до Debian 8 на команду newakiases получается вот такой вот вывод:

    postalias: fatal: open /etc/aliaseshtml_directory: No such file or directory

    В syslog все завалено вот такой ошибкой:

    May 5 07:26:45 cs74 postfix/cleanup[14634]: warning: proxy:mysql:/etc/postfix/mysqlconf/virtual_forwardings.cf lookup error for «root@cs74.ru»
    May 5 07:26:45 cs74 postfix/cleanup[14634]: warning: 216AC1C0190: virtual_alias_maps map lookup problem for root@cs74.ru — message not accepted, try again later

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

  29. neploho:

    Да, ненастроенные пакеты после апдейта были, но я вроде решил проблему. Потом увидел упавший postfix и начал с ним решать проблемы. Но видимо проблема не ушла и она где-то глубже.

    Содержимое aliases: http://pastebin.com/TFgTgh81

    Что-то с пакетами постфикса сломалось.

    • neploho:

      И да, aptitude -f install выдает ту же ошибку, что и на скриншоте выше. Ошибка из-за пакетов постфикса.

      • Тогда делайте резервную копию конфигов. Удаляйте полностью пакеты:

        # aptitude purge postfix postfix-mysql

        далее чистим кэш пакетов, запрашиваем обновления и обновляем доступные пакеты:

        # aptitude clean
        # aptitude update
        # aptitude upgrade

        Далее ставим обратно удаленные пакеты:

        # aptitude install postfix postfix-mysql
  30. neploho:

    Спасибо, буду пробовать.

  31. digis_mail:

    Спасибо, самая толковая инструкция, которую нашел. Все заработало. До этого ставил по другим, двое суток впустую. Еще раз спасибо!!!!!!)

  32. Denyasmail:

    Здравствуйте!Спасибо за отличный мануал по настройкеno

    Сейчас хочу прикрутить к почте Postfixadmin,но  вот не могу понять как подружить их.

  33. firit:

    Здравствуйте.Установил сервер.Нужно организовать почтовую доставку писем.Делал по http://www.linux.org.ru/forum/general/11272834 .Через год работы переправки почты через яндекс почтовик, пришло сообщение — что почтовик возможно взломан поменяйте пароль.Поменял но данный способ перестал работать(возможно  ип сервера как то в черный список ввели- незнаю). Так вот. Если я данный вид настройки  почтового сервера установлю у себя на сервере,то будут ли отправляться письма с php скрипта wordpress,фото галереи на различные адреса майл,яндекс и другие(предположим для регистрации пользователей)?

    • Приветствую. Да письма отправляться/приниматься будут, но есть нюансы. К примеру: на mail.ru отправка/прием работает отлично, а с тем же gmail будет проблема, так как у них ужесточили требования к сертификатам. Gmail отказывается признавать самоподписанные сертификаты SSL, а признаёт только сертификаты от центров сертификации, и решается это установкой нормального сертификата, либо пользователь должен снять защиту с самого Gmail аккаунта, то есть отключить опцию “Always use a secure connection (SSL)” в настройках, что есть не безопасно. Лучше смотреть в сторону нормального сертификата, есть статьи как их получить бесплатно.

  34. firit:

    Спасибо за ответ.Буду ставить.Если будут проблемы с установкой надеюсь на вашу помощь.

  35. firit:

    через mailx письма на mail.ru приходят а вот через скрипт php

    <?php
       mail('pumax@mail.ru', 'тема письма', 'тело письма', 'From: Natali@firit.r$
    ?>

    не приходят?

     

  36. firit:

     /etc/php5/apache2/php.ini

     

    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = localhost
    ; http://php.net/smtp-port
    smtp_port = 25

    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = me@example.com

    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    sendmail_path = /usr/sbin/exim4 -t

  37. firit:

    ставил и это с рестарт апач.Не приходят письма всё равно.

    sendmail_path = /usr/sbin/postfix -t -i
    ; sendmail_path = /usr/sbin/sendmail -t -i
    ; sendmail_path = /usr/sbin/sendmail.postfix -t -i

     

  38. firit:

    Блин- ну если от руута отправляются с консоли, то настройка почтовика верна,а что нужно этому php!!!!!

  39. firit:

    Здравствуйте,всё переделал заново.Сейчас на яндекс письма уходят без проблем но майл.ру нет?

    И ещё вместо xelfaer.ru нужно вставлять свой домен(у меня deti2014),а вот тут

    "где необходимо изменить адрес postmaster@example.com на свой." (вместо postmaster -любое своё выдуманное а вместо example.com обязательно deti2014.ru)?

    Извините если вопросы мягко говоря туповаты,просто учусь.

     

    где необхо

    • xelfaer.ru как и example.com это домен, его необходимо изменить на свой, в Вашем случае если домен deti2014.ru то менять нужно на него, а postmaster это имя почтового аккаунта, его меняете на свой также.

      • firit:

        Здравствуйте.(заменил на deti2014.ru и на deti2014@root.ru) Не получается отослать письма на mail.ru.Подскажите действия для поиска и устранения причины.

        • Правильно будет не deti2014@root.ru, а root@deti2014.ru (так как домен Ваш — deti2014.ru). Соответственно учетная запись почты будет выглядеть username@deti2014.ru, где username — желаемый логин. Относительно mail.ru: отправляете письмо скриптом и смотрите сразу лог, после чего его копируете и прикладываете. Если у Вас свой почтовый сервер, необходимо что бы была прописана обратная зона DNS(PTR запись), так как сервера куда отправляется письмо могут отвергать их из за не верного обратного адреса (в случае если используется белый IP).

          • firit:

            Здравствуйте,ptr запись провайдер прокинул.переделал как писалось вами выше.скрипт php отправил на майл несколько раз.(4-5 раз) из них 1 раз письмо прилетело но в спам.лог mail

            
            
            Jul 23 12:29:33 deti2014 postfix/pickup[15916]: AB5962C70373: uid=33 from=&lt;www-data&gt;
            Jul 23 12:29:33 deti2014 postfix/cleanup[15939]: AB5962C70373: message-id=&lt;20150723022933.AB5962C70373@deti2014.ru&gt;
            Jul 23 12:29:33 deti2014 postfix/qmgr[12927]: AB5962C70373: from=&lt;www-data@deti2014.ru&gt;, size=353, nrcpt=1 (queue active)
            Jul 23 12:29:34 deti2014 postfix/smtp[15944]: AB5962C70373: to=&lt;soapumax@mail.ru&gt;, relay=mxs.mail.ru[217.69.139.150]:25,
            &nbsp;delay=1.2, delays=0.16/0.01/0.43/0.62, dsn=5.0.0, status=bounced (host mxs.mail.ru[217.69.139.150] said: 550 spam message
            rejected.
            &nbsp;Please visit http://help.mail.ru/notspam-support/id?c=q2xyCjS_2tEnvX22t9LwLnEdHU4-O5MmvVkpngj5bwbPXJPUTEoaSvPeseigOA_ExCN53oie78Tyejkwg1RM6U0aFT3R2FEzVJZICBNpXp6YQ_uGpD-arxwUK7zvoUqk9QnJGAWUIO_CTTASnHTraNyouynZTylxOQgnQubej_y9Gg0tRCj-v1B_Goldd5JLy-bNUbXAEEY4yijG6AaWrPHaXCcL08B5-ta045LAVkGSfZPy6Te9ZZlfzlcnNbfTfYoYrZKaH3V3LQduMVM-AcSf_Do7xAY8gZce88y5RufJpByqTT2FwZPO_lgF3e5eKQrrd32FmDCYSaqsE8435_42jXAm_pkg1bYuNUcUnzxn62fvJQEllQQAAAAiugAA0GC0IA~~ or
            report details to abuse@corp.mail.ru.
            &nbsp;Error code: 0A726CABD1DABF34B67DBD272EF0D2B74E1D1D7126933B3E9E2959BD066FF908D493
            5CCF4A1A4A4CE8B1DEF3C40F38A0DE7923C4C4EF9E8830397AF2E94C54833D151A4D3351D8D1084896549E5E691
            386FB4398AF9A3FA4BC2B141CA44AA1EF18C909F5EF20940512304DC268EB749C29BBA8DC71294FD942270839FC8FDEE62D0
            D1ABDBFFE2844891A7F504B92775D51CDE6CB4610C0B5C628CA38AC9606E8275CDAF179C0D30BE3B4D6FA4156C092F2937D9265B
            D37E957CE5F99D3B73527AD188A7D751F9A926E072D77013E53313AFC9FC43C06C43BF31E9781E746B9CCAA1CA4C9C1853D4D58FECE9
            35EEEDD0577EB0A293098857 (in reply to end of DATA command))
            Jul 23 12:29:34 deti2014 postfix/cleanup[15939]: E869F2C70378: message-id=&lt;20150723022934.E869F2C70378@deti2014.ru&gt;
            Jul 23 12:29:35 deti2014 postfix/bounce[15945]: AB5962C70373: sender non-delivery notification: E869F2C70378
            Jul 23 12:29:35 deti2014 postfix/qmgr[12927]: E869F2C70378: from=&lt;&gt;, size=4187, nrcpt=1 (queue active)
            Jul 23 12:29:35 deti2014 postfix/qmgr[12927]: AB5962C70373: removed
            Jul 23 12:29:35 deti2014 postfix/error[15946]: E869F2C70378: to=&lt;www-data@deti2014.ru&gt;, relay=none, delay=0.12,
            delays=0.06/0/0/0.05, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to deti2014.ru[85.15.70.180]:25:
            &nbsp;Connection timed out)
          • В /etc/hostname прописали deti2014.ru ? По команде hostname дожено быть deti2014.ru. В логе есть ссылка, по ней необходимо перейти и оформить заявку что бы письма не воспринимались как спам.
            p.s. Для вставки содержимого логов используйте кнопку редактора Вставить сниппет.

  40. firit:

    Да при команде hostname выдаёт deti2014.ru.По ссылке перешёл, письмо написал.Только вот не всегда в спам попадает из 4-5 раз отправки проскочило однажды-одно и то в спам.Все другие разы,были в пустую. Буду ждать ответа от них.Хотя если попадает в спам значить что-то не нравится- майлу,что то неправильно настроенно у меня всё-таки? 

    • Если отправлять много писем, то система может посчитать что рассылается спам. Что бы выяснить причину что и как: пишется письмо, отправляется, при этом параллельно смотрятся лог файлы. Благодаря им можно выяснить причину.

  41. sol13:

    Здравствуйте, помогите пожалуйста настроить почтовый сервер. Почта будет крутиться только внутри сети. сеть типа 10.0.0.0/8 

    Раньше была винда  и были почтовики 01@rabota.rk, 02@rabota.rk сервер 10.64.20.2, сетка 10.0.0.0/8, вопрос, что прописать в hosts и hostname? как сделать настройку на pop?

    • Для Вашей цели больше подошло бы использование sendmail.
      Для начала настраиваем по статье. В конфиге /etc/postfix/main.cf указываете список доверенных сетей в параметре mynetworks = 127.0.0.0/8, 10.0.0.0/8.
      В myhostname = rabota.rk

      /etc/hostname
      rabota.rk

      /etc/hosts:
      127.0.0.1 localhost
      10.64.20.2 rabota.rk

      Если только внутри предприятия, то для чего использовать pop3? Вам с головой хватит imap, да и его выгодней использовать.

      • sol13:

        Спасибо за помощь!

        Проблема в том, что уже на 50 машинах в бате pop стоит, и некоторые из них не в моем городе. Вот поэтому нужно pop.

        • Тогда для этого необходимо для начала установить пакет dovecot-pop3d.
          В файле конфига /etc/dovecot/dovecot.conf изменить:
          protocols = imap pop3

          В файле конфига /etc/dovecot/conf.d/10-master.conf можете изменить порты для протоколов imap/pop3 и использование SSL.

  42. firit:

    Здравствуйте.Вот с майла прислали.

    Дело в том, что IP-адрес, с которого производится отправка писем,
    находится в публичных спам-листах
    (http://dnsbllookup.com/?ip=85.15.70.180). Для разблокировки необходимо
    удалить его из публичных списков.

    Как он туда попал не пойму. Мож провайдер битый выдал.

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

  43. firit:

    А эти публичные — все на английском,вот сейчас головняк!!!

  44. firit:

    Спасибо!Буду разбираться с этой проблемой.Спасибо за подмогу!!!

  45. nani:

       Здравсвуйте, а если на сервере стоит  ubuntu,   можно поднять почту по этой инструкции?

  46. nani:

    Помогите разобраться:

    telnet localhost
    Trying 127.0.0.1…
    Connected to localhost.localdomain.
    Escape character is '^]'.
    Ubuntu 14.04.3 LTS
    Ubuntu… login: 

     

     сижу под root, но если его ввожу:

    Login incorrect
    Ubuntu… login: Connection closed by foreign host.

     

  47. nani:

    Подскажите, пожалуйста, как можно просмотреть отправленные и принятые сообщения?

     

  48. braxalend:

    Привет Бро! поднимал по твоему мануалу, да не пошло с первого раза. Заработать не хочешь чутка? 

    Debian 8, LAMP уже стоит.

  49. igory:

    Привет! Настраиваю по твоему мануалу. 

    Подскажи, пожалуйста:
    ставил roundcube или squirrelmail, при попытке авторизоваться в /var/log/dovecot.log :

    Connected to database mail

    Warning: mysql: Query failed, retrying: Unknown column 'username' in 'field list'Password query failed: Unknown column 'username' in 'field list' (using built-in default password_query: SELECT username, domain, password FROM users WHERE username = '%n' AND domain = '%d')

     

    Пытался добавлять поля username, domain , пишет :

    Aborted login (auth failed, 1 attempts in 2 secs): user=<admin>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured, session=<gVsyTS0g5gB/AAAB>

    Попробовал разные значения вставлять в username и domain, та же ошибка. 

     

    И еще, отравлял почту на gmail ящик, все хорошо приходит. Ответил — как я понял, письмо не пришло. В консоли 

    ~# mail

    No mail for root

     

    Заранее спасибо!

    • Приветствую. WEB интерфейс для почтового сервера я не использую, поэтому что то конкретное подсказать тяжело. Нужно смотреть для начала конфиги. Использовать SquirrelMail вообще не лучший вариант, ибо версия у него достаточно старая.
      Относительно отправки/приема писем. Смотрите сразу логи: на любые отправку/прием идет логирование. На какой почтовый ящик вы отправляли? Есть ли данный аккаунт у вас в БД?

  50. firit:

    Здравствуйте.Был debian 6,всё установилось с ходу.Установил 8.

    Дошёл до telnet localhost 25 и всё!
    Долго думает потом выдает Connection closed by foreign host,до установил пакет dovecot-mysql.Всё заработало. Потом ehlo localhost выдаёт ehlo: команда не найдена.Может укажите причину,или как найти причину.Как понял не работает postfix.Но рестартует  postfix без ошибки.

    Долго думает потом выдает Connection closed by foreign host

  51. atsybulin:

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

  52. firit:

    Здравствуйте у меня вот так

    Trying ::1…
    Trying 127.0.0.1…
    Connected to localhost.
    Escape character is '^]'.
    Connection closed by foreign host.

    НО ПИСЬМА ОТПРАВЛЯЮТСЯ.Скажите пожалуйста — как это исправить и почему это плохо,ведь письма отправляются?

    • Для отправки используется SMTP, а для принятия — IMAP. В данном случае мы проверяем работу IMAP сервера, и по всей видимости либо у Вас закрыт порт, либо вовсе не работает dovecot.
      Запускайте/перезапускайте демон dovecot.
      Прикладывайте логи:
      /var/log/dovecot.log
      /home/vmail/dovecot-deliver.log
      и вывод:
      netstat -tap

  53. firit:

    Понятно.Спасибо разобрался!Не легли ключи dovecot.key в нужную папку(чёрт попутал)crying

  54. firit:

    Если вас не затруднит разъясните пожалуйста(я разбираюсь только во всём) devil.Вот я дошёл до места настройки почты

    ehlo localhost
    250-linda.ru
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-AUTH PLAIN
    250-AUTH=PLAIN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    quit
    221 2.0.0 Bye
    Connection closed by foreign host.

    При настройках выше указывал root@linda.ru.Письма на майл и яндекс отправляются.

    В майле указываю обратный адресс root@linda.ru.Письмо уходит,обуза(ошибка от майла не приходит,т.е письмо дошло до адресата).Где смотреть принятое письмо? Или же нужно продолжить установку далее по статье?И как мне убрать root@linds.ru ну например на  sos@linda.ru(просто изначально при настройке указывать не root@linda.ru a sos@linda.ru)?

    • Для начала нужно настроить все по статье, там все расписано для чего нужно. То что Вы настраивали выше это грубо говоря общий почтовый адрес(как пример: webmaster@example.com или info@example.com) он же алиас почтового адреса. Добавления других почтовых адресов как и переадресация осуществляется в БД.
      Почта хранится в каталоге:

      # Расположение и формат файлов почты (%d - домен, %n - имя пользователя)<br />
      mail_location = maildir:/home/vmail/%d/%n
  55. kudesnik:

    Добрый день,

    не подскажите, что может быть не так, если в логах mail.warn такое:

    
    
    Jan 12 22:32:17 servername postfix/pipe[975]: fatal: user= command-line attribute specifies mail system vmail group id 5000
    Jan 12 22:32:18 servername postfix/qmgr[15675]: warning: private/dovecot socket: malformed response
    Jan 12 22:32:18 servername postfix/qmgr[15675]: warning: transport dovecot failure -- see a previous warning/fatal/panic logfile record for the problem description

    Вроде как делал по Вашему мануалу, почта уходит, но получить нельзя.

    К сожалению, версии софта, я так понял отличаются, так как тот же конфиг dovecot имеет немного другую структуру, например:

    
    
    auth default {
    socket listen {
        master {
          # Master socket provides access to userdb information. It's typically
          # used to give Dovecot's local delivery agent access to userdb so it
          # can find mailbox locations.
          #path = /var/run/dovecot/auth-master
          mode = 0600
          # Default user/group is the one who started dovecot-auth (root)
          user = vmail
          #group =
        }
        client {
          # The client socket is generally safe to export to everyone. Typical use
          # is to export it to your SMTP server so it can do SMTP AUTH lookups
          # using it.
          path = /var/spool/postfix/private/auth
          mode = 0660
          user = postfix
          group = postfix
         
        }
    }

    Вот думаю, что где-то в этом что-то не так.

    Еще в main.cf дописал:

    
    
    # setgid_group: The group for mail submission and queue management
    # commands.  This must be a group name with a numerical group ID that
    # is not shared with other accounts, not even with the Postfix account.
    #
    setgid_group = vmail
    • Приветствую. На каком дистрибутиве и версии происходит настройка? Какая версия dovecot? После запуска/перезапуска dovecot что пишется в логе?

      • kudesnik:

        Debian-60-squeeze-64-minimal

        Версия dovecot — 1.2.15

        В логах, dovecot ничего такого вроде нету. если смотреть лог dovecot.log — то там только строки типа:

        
        
        2016-01-13 04:04:24 dovecot: Warning: Killed with signal 15 (by pid=21121 uid=0 code=kill)

        Но, это после рестарта сервиса, я так понял.

        Если смотреть dovecot-deliver, то только логи логинов в основном:

        
        
        2016-01-13 03:56:59 imap-login: Info: Login: user=&lt;office@domain.com&gt;, method=PLAIN, rip=128.194.36.138, lip=146.236.216.135, TLS
        2016-01-13 03:56:59 IMAP(office@domain.com): Info: Effective uid=5000, gid=5000, home=/home/vmail/domain.com/office
        2016-01-13 03:56:59 IMAP(office@domain.com): Info: Namespace: type=private, prefix=INBOX/, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes
        2016-01-13 03:56:59 IMAP(office@domain.com): Info: maildir: data=/home/vmail/domain.com/office
        2016-01-13 03:56:59 IMAP(office@domain.com): Info: maildir++: root=/home/vmail/domain.com/office, index=, control=, inbox=/home/vmail/domain.com/office
        2016-01-13 04:04:24 dovecot: Info: Dovecot v1.2.15 starting up (core dumps disabled)
        2016-01-13 04:04:24 auth-worker(default): Info: mysql: Connected to 127.0.0.1 (mail)
        • Если внимательно прочтете статью — в ней я указал что на более ранней версии конфиги придется менять, так как они не заведутся из за существенных различий. У меня завалялся старый конфиг который я делал на Debian 6. Для dovecot он имеет следующий вид:

          ## Dovecot configuration file
          protocols = imap imaps pop3 pop3s
          log_timestamp = "%Y-%m-%d %H:%M:%S "
          mail_location = maildir:/home/vmail/%d/%n/Maildir
           
          ssl_cert_file = /etc/ssl/certs/dovecot.pem
          ssl_key_file = /etc/ssl/private/dovecot.pem
           
          namespace private {
            separator = .
            prefix = INBOX.
            inbox = yes
          }
           
          protocol lda {
            log_path = /home/vmail/dovecot-deliver.log
            auth_socket_path = /var/run/dovecot/auth-master
            postmaster_address = admin@xelfaer.ru
            mail_plugins = sieve
            global_script_path = /home/vmail/globalsieverc
          }
           
          protocol pop3 {
            pop3_uidl_format = %08Xu%08Xv
          }
           
          auth default {
            user = root
           
            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
              }
            }
          }

          dovecot-sql.conf

          driver = mysql
          connect = host=127.0.0.1 dbname=mail user=usr password=passwd
          default_pass_scheme = CRYPT
          password_query = SELECT email AS user, password FROM users WHERE email = '%u';

          где: usr и passwd меняете на свои.

  56. Rashad:

    Здравствуйте, выполнив эту команду:

    chmod o= /etc/postfix/mysqlconf/virtual_*.cf

    chmod выдает эррор: No such file or directory. 

    На самом деле файлы в директории есть.

  57. Sanya:

    Здравствуйте, на моём сервере не существует папки /ets/aliases . Что делать?

  58. firit:

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

    • Postfix использует и так хороший формат хранения почты Maildir. Относительно сохранения входящих/исходящих писем в БД из коробки на Postfix мне не известна, но как вариант посмотрите в сторону MTA Exim в связке с MDA DBmail.

  59. moby_111:

    Доброго времени. Спасибо за статью. 

    Может что-то упустил, но не могу понять какие настройки нужны для моего варианта. Если возможно помогите. Имею vps1 для хостинга например с доменом moby.ru и например почтовый ящик там-же vasya@moby.ru, всё прекрасно работает. Но есть желание всю почту вынести на другой vps2, какие нужны настройки что-б через vps2 шла вся почта с моего домена и моего мыла vasya@moby.ru и т.д. ?

    • Необходимо изменить MX запись в настройках домена для vps2, настроить почтовый сервер на vps2. В конфигурационном файле postfix — main.cf необходимо указать соответственно список обслуживаемых доменов (параметр mydestination), а также список сетей из которых разрешена отправка почты (параметр mynetworks).

        • moby_111:

          Извините видимо сразу не понял что вы рекомендуете — "Необходимо изменить MX запись в настройках домена для vps2" — вы имели ввиду vps1? домены ведь на нём. На vps2 только почтовый сервер стоит.

          • Если у вас один домен — то в его настройках необходимо изменить значение MX для VPS на котором будет крутиться почтовый сервер, в вашем случае это адрес vps2.

  60. moby_111:

    Доменов 5 штук на vps1,  я правильно вас понял — для примера на vps1 ( где сайты висят ) записи вида:

    * A  85.31.24.143

    vtech.ru. A 85.31.24.143

    @ MX mail.pochta.ru. (почтовый сервер на vps2)

    vtech.ru. TXT v=spf1 a mx ip4:79.20.43.403 ~all (почтовый сервер на vps2)

    • moby_111:

      В общем перепробовал всё ))) ответ примерно бывает такой:

      NOQUEUE: reject: RCPT from mail-io0-f175. Recipient address rejected: User unknown in local recipient table; 

      Спасибо ещё раз! буду дальше по старинке юзать постфиксадмин )))

  61. Kir:

    Большое спасибо за мануал, все работает прекрасно:-)
    А не подскажите как изменить root@xxx.ru на support@xxx.ru

    Заранее спасибо вам, очень надеюсь на ответ:-)

  62. alexss1:

    Здравствуйте! Хочу попробовать Ваш мануал в деле на новом сервере. Подскажите, для чистой версии Debian 8.3 пойдет без проблем? Заранее спасибо за ответ.

  63. alexss1:

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

    2016-03-24 16:53:39 imap-login: Info: Aborted login (no auth attempts in 0 secs): user=<>, rip=X.X.X.X, lip=X.X.X>X, session=<9X+anMwuEwBbxFkE>

    почему-то в user пусто.

    The bat выдает:

    Приветствие TLS не завершено. Имя сервера "имя" не соответствует сертификату.

    Thunderbird тоже не хочет подключаться.

    Подскажите куда копать?

    • Myt:

      Включи всю отладку в dovecot.conf

      mail_debug = yes
      auth_verbose = yes
      auth_debug = yes
      auth_debug_passwords = yes
      auth_verbose_passwords = yes
       

      Используй для отлладки telnet: http://wiki.dovecot.org/TestInstallation или Thunderbird

      ИМХО The Bat плохо работает с самоподписными сертификатами и IMAP

      • alexss1:

        Написал ниже, что с сертификатом понял, но почему-то не подключается по smtp. Файервол чистый и всё открыто (система тоже). Но при попытке отправить через тандербёрд письмо — пишет невозможно соединиться. Пробую 25-й порт, STARTTLS, имя , пароль. Пробовал разные варианты шифрования.

      • alexss1:

        Включил все команды, кроме последней (она не принимается dovecot), но куда эти логи записываются? Потому что я ничего пока не вижу файле dovecot.log

    • Для начала нужно указать дистрибутив на котором поднят МТА, а также приложить более полные логи. Проверить доступность и проброс портов.

      • alexss1:

        Debian 7.9.

        С сертификатом разобрался. Проблема была в том, что неправильно указал домен. Сейчас пытаюсь клиентом соединиться с сервером. Входящие синхронизируются, а письмо по SMTP не уходит. Пишет невозможно соединиться с сервером. В логах dovecot ничего по этому поводу нет…

      • alexss1:

        А подскажите, каким образом можно вообще посмотреть логи postfix? Я так понимаю, что там проблема какая-то, раз не может соединиться.

  64. alexss1:

    Ситуация такая:

    Система настроена по мануалу и тесты внутри debian проходит, т.е. почта уходит и приходит. Thunderbird тоже подключается и входящие синхронизирует. Если отправлять с помощью mailx письмо с линукса, тогда всё уходит на внешние адреса, но через клиент (Thunderbird) нет. Клиент не может соединиться сервером. В логах mail.* ничего нет по этому поводу, т.е. вообще никакой реакции. iptables -L — правил никаких нет (т.к. система только установлена). Со стороны клиента ошибка: время ожидания соединения с сервером истекло. Порт 25, обычный пароль, STARTTLS, имя сервера указано верно, логин мойлогин@мойдомен.
    Подскажите, как решить проблему подключения по smtp со стороны клиента?

    • alexss1:

      Добавлю, что 

      Connection Status : Connection to <myserver> on port 25 was successfull 

      220 <домен> ESMTP Postfix (Debian/GNU)

      Я ничего не пойму. Если 25-й порт открыт, то почему не может соединиться с сервером и главное — почему в логах вообще ничего нет?

  65. alexss1:

    Кому интересно — настроил roundcube с привязкой к указанному конфигу по этой ссылке:

    http://redhat-club.org/2011/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-postfix-dovecot-mysql-roundcube-webmail

    Качаете файл с сайта roundcube, загружаете в /var/www/roundcube (или другое название). Смотрите внизу только раздел "Установка Roundcube webmail". Всё оказалось просто.

  66. alexss1:

    Подскажите, пожалуйста, а как корректно удалять ящик? Я так понимаю, что удалить запись о пользователе в базе не достаточно?

  67. alexss1:

    Так и не получилось настроить клиенты, чтобы с помощью них отправлять письма. Приём (IMAP) работает, отправка — нет. Debian 7.9.

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

    /var/log/mail.log
    /var/log/dovecot.log
    /home/vmail/dovecot-deliver.log

    • Вариантов несколько.
      Когда идет отправка через WEB интерфейс — она осуществляется непосредственно с сервера, так как пользователь уже находится внутри этой сети, а когда настраивается клиент он сперва соединяется с сервером из внешней сети. Проверяйте что бы порты были открыты для начала для SMTP — 25 порт. В логах фиксируется что кто то пытается авторизоваться на сервере.
      Ну и по правильному — необходимо прикладывать конфиги также и сами логи, так как тыкать пальцем в небо без этого смысла мало. Так же я сталкивался с проблемой в Thunderbird когда в одной версии программы он на отрез отказывался отправлять письма, и после выхода нового релиза — проблема исчезла.

      • alexss1:

        Версия Thunderbird последняя. Iptables не применял (таблица пустая проверил). 25-й порт открыт, также проверил извне (по telnet соединяется по 25-му порту). В каких логах смотреть? В указанных выше логах ничего нет вообще, т.е. момент отправки нигде не фиксируется. Конфиги Ваши 1 в 1 — перепроверил несколько раз (я их просто копировал с применением к своему домену, а потом удалил разве что в postfix несколько сайтов с блэклистами, всё остальное один в один). Еще раз повторюсь, что почта работает, проблема именно в соединении. Я тоже думал, что дело в Firewall, но в правилах пусто (iptables -L). Может надо что-то прописать в них?!

        • Myt:

          На вскидку:

          Включи отладку допиши ключ -v, (просто дописать без перевода строки, так просто отображается) потом перезагрузи постфикс
          /etc/postfix/master.cf:
              smtp      inet  n       —       n       —       —       smtpd -v

          Проанализируй файлы: /etc/var/log/mail.*

          Проверь — падает ли почта от юзера в почтовые каталоги, попадает ли почта другому локальному пользователю

          Проверь работу через telnet

          telnet 1.1.1.1 25
          Trying 1.1.1.1…
          Connected to 1.1.1.1.
          Escape character is '^]'.
          220 mydomen.my ESMTP Postfix (Ubuntu)
          ehlo  mydomen.my
          250- mydomen.my
          250-PIPELINING
          250-SIZE 10240000
          250-VRFY
          250-ETRN
          250-STARTTLS
          250-ENHANCEDSTATUSCODES
          250-8BITMIME
          250 DSN
          quit
          221 2.0.0 Bye
          Connection closed by foreign host.

          1.1.1.1 твой IP
          mydomen.my твой домен

           

  68. pochtaliot:

    День добрый, подскажите, у вас добавлен механизм авторизации в smtpd.conf и  LOGIN но он не отображается в списке доступных механизмов при подключении по телнету к localhost (AUTH PLAIN)

    Что нужно еще прописать и где чтобы этот механизм добавился?

  69. mult-tg-golova:

    Здрасьте еще раз) Можно ли накрутить GUI на данную конфигурацию, если да, то в какую сторону смотреть?

    • GUI для какой именно цели? Администрирование или WEB интерфейс для работы с почтовым клиентом? В обоих случаях их прикрутить можно. Для администрирования можно посмотреть в сторону Postfixadmin или ViMbAdmin. WEB интерфейс для работы с почтовым клиентом — Roundcube, RainLoop, Horde.

      • mult-tg-golova:

        Цель — администрирование…хмм да, и еще вопросик. Возможна такая настройка данного сервера, при которой в почтовых клиентах указывается общий аккаунт на входящие сообщения, в котором у нас лежат папки каждого пользователя, куда падают письма, полученные соответственным юзером. Надеюсь не слишком туманно) Ну то есть на отправку акк у каждого свой, а на получение — общий, но разбит на папки, у каждого юзера своя, чтобы все видели письма всех.

  70. max:

    Через сервер стал разноситься спам( проверки на open relay почти все — не проходят. В main.cf вроде бы все за reject'чено кроме sasl_auth и my_network, сама сеть прописана лишь 127.0.0.0 и локальная. Это точно не скрипт на машине т.к. при закрытии 25 порта на шлюзе или остановке сервиса postfix спам прекращается. Сервер настроен совсем недавно, и ничего кроме почты на нем не установлено.

    Такое ощущение что правила из main.cf почему-то не работают.

  71. Nikopol:

    Доброе время суток
    Приношу извинения за возможно глупые вопросы, но я только начинаю во всём этом разбираться.
    Дошел по вашему мануалу до пункта:
    Настройка Postfix.
    И возникло 2 вопроса:
    1. Зачем нужен файл конфигурации по адресу:
    /usr/lib/postfix/main.cf если он копируется в другое место?
    2. Строчка: «и приступаем к его наполнению:»
    подразумевает удаление всего содержимого файла и замены вашим с подстановкой моих данных или поиска и изменения конкретных строчек?

    Если второе то непонятно как это искать у вас пометки на русском а в файле их естественно нет.
    Версия Postfix 2.11.3-1

    • Приветствую:
      1) файл /usr/lib/postfix/main.cf является по сути резервным и дефолтным файлом конфигурации из которого мы строим требуемую конфигурацию.
      2) это уже по желанию и собственному усмотрению, проще все удалить и скопировать содержимое из приведенного в статье если производиться настройка по ней.
      Пометки на русском я делал для себя, что бы было удобней.

  72. Nikopol:

    Еще раз доброе время суток

    дошел до настройки алиасов

    прописал свой адрес типа vasya@oba.na.com

    и применил изменения командой newaliases.

    На выходе получил:

    
    
    newaliases: fatal: /etc/postfix/main.cf, line 52: missing '=' after attribute name: "?? ?? permit_mynetworks,"
    • Nikopol:

      До этого postfix рестартовал без ошибок.

      В файл main.cf я скопировал ваши настройки удалив содержимое и заменив myhostname = на свой типа myhostname =oba.na.com

      Забекапив файл main.cf я снова заменил его файлом /usr/lib/postfix/main.cf и снова скопировал в него ваши настройки с заменой myhostname.

      При попытке рестарта postfix он не запустился.

      выдав строку:

      
      
      [....] Restarting postfix (via systemctl): postfix.serviceJob for postfix.service failed. See 'systemctl status postfix.service' and 'journalctl -xn' for details.
       failed!
      • Nikopol:

        Вот что выдал systemctl status postfix.service:

        
        
        ● postfix.service - LSB: Postfix Mail Transport Agent
           Loaded: loaded (/etc/init.d/postfix)
          Drop-In: /run/systemd/generator/postfix.service.d
                   └─50-postfix-$mail-transport-agent.conf
           Active: failed (Result: exit-code) since Sat 2016-10-15 17:04:26 UTC; 11s ago
          Process: 2099 ExecStop=/etc/init.d/postfix stop (code=exited, status=0/SUCCESS)
          Process: 2829 ExecStart=/etc/init.d/postfix start (code=exited, status=1/FAILURE)

        Теперь postfix стартует только с дефолтным main.cf, восстановление моего из бекапа успеха не приносит. Копирование ваших настроек тоже.

        • Nikopol:

          Теперь main.cf имеет вид как в вашей инструкции без изменений просто копировал и вставил. По прежнему не стартует

          Подскажите пожалуйста, что могло произойти и самое главное как посмотреть какая строчка конфига ему не по нраву?

          прошу прощения за раздробленность но целиком вставить вопрос не получилось.

          • Для начала укажите дистрибутив и версию его. Приложите конфиги, логи.

  73. Nikopol:

    Дистрибутив вот этот:
    Raspbian Jessie Lite
    Minimal image based on Debian Jessie
    Version: September 2016
    Release date: 2016-09-23
    Kernel version: 4.4
    т.к. задача стоит наcтроить почту на raspbery

    вот конфиги и логи
    http://my-files.ru/c0jtxi

    нашел такую сточку в логе

    Oct 15 17:49:20 raspberrypi postfix/postalias[4379]: fatal: open /etc/aliases.db: Permission denied
    Oct 15 18:08:17 raspberrypi postmulti[5164]: fatal: bad string length 0 &lt; 1: setgid_group =

    Если я правильно понял ошибка возникает из-за базы алиасов, но всё что я с ними делал это:

    Настройка почтовых алиасов.
    Для настройки почтовых алиасов необходимо отредактировать файл /etc/aliases. Нас интересует две строки:
    postmaster: root
    root: viktor@pocta.no-ip.biz
    где меняем адрес postmaster@example.com на желаемый. Сохраняем изменения и применяем изменения:
    # newaliases

    Если это важно настройка идёт по ssh через редактор nano и тот который встроен в миднайт коммандер.

    • Какие права на /etc/aliases ? Запускаете команду из под root?
      Измените uid и gid:

      # chown root.root /etc/aliases

      далее

      # newaliases

      и

      # /etc/init.d/postfix restart
      • Nikopol:

        Благодарю.

        Права изначально стояли:

        -rw-r—r— 1 root root

        Команду запускал из под root через sudo

        попробовал ваши советы предварительно удалив aliases.db

        файл создался, но постфикс по прежнему не запускается

        в логах тоже самое.

        Погуглив нашел следующее:

        https://ubuntuforums.org/showthread.php?t=1429449

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

        • Nikopol:

          Доброе время суток

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

          Сейчас почта работает, но возникло ещё несколько вопросов.

          1. После ввода команды:

          telnet localhost 25

          Получал сообщение, что-то типа «сервер закрыл соединение», к сожалению не сохранил, и в логах появлялись ошибки

          В логе Postfix:

          Oct 22 18:08:01 raspberrypi postfix/smtpd[1548]: fatal: no SASL authentication mechanisms
          Oct 22 18:08:02 raspberrypi postfix/master[1389]: warning: process /usr/lib/postfix/smtpd pid 1548 exit status 1
          Oct 22 18:08:02 raspberrypi postfix/master[1389]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling

          В логе Dvecot:

          2016-10-22 18:08:01 auth: Fatal: Unknown database driver 'mysql'Fatal: Unknown database driver 'mysql'
          2016-10-22 18:08:01 master: Error: service(auth): command startup failed, throttling for 2 secs

          Потратив какое-то время на поиск ошибок и найдя их, пробелы перед именем и паролем в файлах dovecot-sql.conf.ext и /etc/pam.d/smtp, я, погуглив, нашел решение для ошибки в логах Dovecott. т. е. Установил этот самый драйвер mysq командой:

          # aptitude install dovecot-mysql

          Ошибка исчезла коннект пошел
          Но при отправке тестового сообщения появилась новая:

          2016-10-22 23:36:29 lda: Fatal: Plugin 'sieve' not found from directory /usr/lib/dovecot/modules

          Которая пропала после установки модуля

          # aptitude install dovecot-sieve

          Вопрос:
          Установка этих программ отдельно происходит потому, что в Dovecot v2.2.13 они вынесены в отдельные модули и при написании Вами мануала это не было необходимо, потому и не указано, или это частый случай при использовании Raspbery?>

          2. Не удается сделать бэкап базы данных.

          При вводе команды:

          sudo mysqldump --add-drop-table -h localhost mail | bzip2 -c &gt; `date +%F`_mail.sql.bz2

          консоль выдаёт:

          -bash: `date +%F`_mail.sql.bz2: Permission denied
          mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

          Соответственно меняю команду на:

          sudo mysqldump -u root -p --add-drop-table -h localhost mail | bzip2 -c &gt; `date +%F`_mail.sql.bz2

          консоль в ответ:

          -bash: `date +%F`_mail.sql.bz2: Permission denied

          Enter password: (ввожу пароль)
          mysqldump: Got errno 32 on write

          Вопрос:

          Как разрешить доступ (я так понимаю ошибка 32 именно с этим и связана), куда вообще должен сохраняться бэкап? Пробовал прописывать путь /home/pi/`date +%F`_mail.sql.bz2 не помогло.

          3. По собственной не опытности не подумал, что при вводе команды:

          INSERT INTO users (email, password) VALUES ('test@xelfaer.ru', ENCRYPT('password'));

          менять на своё нужно не только значение test@xelfaer.ru, но и password,т.к. думал, что пароль будет использоваться тот который бал задан ранее при создании пользователя. А у Вас не указано, что нужно конкретно менять. В результате получил почтовый ящик с паролем ПАРОЛЬ :-).
          Соответственно озадачился сменой пароля, Но так и не смог осилить синтаксис команды

          UPDATE.
          В результате пришлось удалять все записи, благо одна, командой:
          <code class="language-php">DELETE FROM users

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

          4. На данный момент приём сообщений из интернета работает, а при попытке отправить приходит сообщение:

          You should authenticate first or your host [ХХХ.ХХХ.ХХХ.ХХХ] is blacklisted by zen.spamhaus.org. No mail will be accepted.

          Поискав на сайте http://www.spamhaus.org нашел следующее:

          This IP address range has been identified by Spamhaus as not meeting our policy for IP addresses permitted to deliver unauthenticated &#039;direct-to-mx&#039; email to PBL users.
          Important: If you are using any normal email software (such as Outlook, Entourage, Thunderbird, Apple Mail, etc.) and you are being blocked by this Spamhaus PBL listing when you try to send email, the reason is simply that <strong>you need to turn on &quot;SMTP Authentication&quot;</strong> in your email program settings. For help with SMTP Authentication or ways to quickly fix this problem

          Если я правильно понял, с моим пришибленным знание английского, то IP адрес не заблокирован, а просто не удовлетворяет политике безопасности и для отправки нужно правильно настроить SMTP аутентификацию.
          Также при настройке Thunderbird он сообщил мне, что мой самоподписанный сертификат не имеет доверия в результате чего пришлось использовать исключение безопасности.
          Как я понимаю у этих двух проблем один корень.
          Вопрос:
          Можно ли что-то сделать с сертификатами и настройками для нормальной отправки почты при использовании динамического ip и сервиса no-ip.com т. к. использовать постоянный нет возможности или это невозможно?

          • Nikopol:

            До нажатия кнопки отправить сообщение выглядело нормально 🙂

            За отведённое на редактирование время исправить не успел.

            Не везет мне с отправкой сообщений в этот блог. 🙂

            Поправьте пожалуйста если можно или откройте для редактирования сам исправлю.

          • Поправил, нужно просто внимательно писать 🙂

        • 1) На момент написания статьи версии ПО были разные, как обстоят дела в «малине» я не могу знать.
          2) Для начала проверьте наличие пакетов bzip2(bunzip2).
          3) Вам стоит обратить внимание тогда лучше на PHPMyAdmin.
          4) Вам нужно прописать на домене: MX запись, которая должна указывать на наш почтовый сервер + PTR запись которая связывает IP адрес с именем домена. Также после сделать запрос на удаление IP из базы zen.spamhaus.org.
          Относительно сертификатов: это самопдписанный сертификат, для устранения проблемы зарегистрируйте официальный сертификат — сертификат от центров сертификации (прочитайте комментарии опубликованные ранее, там это немного упоминалось).

          • Nikopol:

            Благодарю за помощь.

            Пункты 1 и 3 понятно. С 4-м разобрался сам, но вашу помощь ценю.

            по пункту 2 забыл написать, пакет стоит bzip2 1.0.6-7 но команда не работает. Это последнее с чем осталось разобраться.

          • Относительно создания бэкапа БД: выполните команду по частям. Проверьте работу непосредственно команды date, а после уже с указанным ключем для формата вывода. Также поступите и с mysqldump.

  74. Nikopol:

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

    Еще раз благодарю за помощь. А покуда почитаю мануалы.

  75. Vorobey:

    Здравствуйте.  U 16.04 mail.log ругает запрос

    
    
    warning: mysql query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'virtual FROM domains WHERE domain = 'example.com'' at line 1

    Если убрать псевдоним AS virtual вроде работает появляются INBOX в vmail
    Для чего нужен virtual в запросе?
    Появилась во такая ошибка

    
    
    Nov 16 00:58:32 vds postfix/pipe[1335]: 07E5966896: to=test@example.com, relay=dovecot, delay=1134, delays=1134/0.03/0/0.11, dsn=4.3.5, status=deferred (mail system configuration error)
    Nov 16 00:58:32 vds postfix/pipe[1335]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1

    ps. также нужен dovecot-sieve

    • Vorobey:

      Убрал AS virtual. В /etc/postfix/main.cf  поставил  dovecot_destination_recipient_limit = 1 Письма приходят.

      Появилась следующая проблема.

      1. Не могу подключится к созданному ящику mail@example.com и забрать почту. 

      2. Если послать на этот ящик письмо не mailx, то оно не приходит и в /home/vmail не создается его каталог.

       

  76. Ralf:

    Уважаемый автор, настроил по вашей схеме, telnet проверил-работает, попробовал telnetom отправить письмо не на доменный ящик а на gmail-получилось, а вот отправить на доменный ящик другой не получилось, хотя telnet пишет что все ОК. Захожу на сервер письма нет.Подключаюсь через thunderbird, настройки нашел, пароль принял, письма скачал которые я туда просто скопировал, но отправлять не хочет(Ошибка отправления почты: Не удалось установить защищённое соединение с сервером исходящей почты (SMTP) «10.20.0.2» с использованием STARTTLS, так как он не заявил о поддержке этой возможности. Отключите использование STARTTLS для этого сервера или свяжитесь с вашим сервис-провайдером.) Никак не пойму, сертификаты есть все и в постфикс те же настройки что и у вас стоят, подскажите куда копать

  77. Ralf:

    Все настраивал на Debian 8.6

  78. Ralf:

    Автору, огромное респектище , я разобрался сам, вот только внесите плз поправку(установка пакета dovecot-mysql )

  79. MASTER RELAXa:

    Я может и некрофил, но в свое время статья мне сильно помогла, и хотелось бы её привести до совершенства 🙂 В начале статьи делается конфиг из довекота в довекот2, а потом всё-равно правится конфиг стандартного довекота, можно узнать тайный смысл?)

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