Мар 012011
 

Настройка почтового сервера… Этим можно заниматься вечно и всегда будет куда стремится.
Вот, что требовалось до установки:

  1. Требования
  2. Хранение почты на сервере
  3. Фильтрация спама
  4. Проверка вложений на вирусы
  5. Возможность использовать дополнительные домены
  6. Средние нагрузки (250+ пользователей)
  7. Списки рассылок
  8. WEB клиент

Что использовалось:

  1. Postfix
  2. Courier
  3. Amavis
  4. Spamassassin
  5. Razor
  6. ClamAV
  7. Roundcube
  8. Mailman
  9. Mailgraph
  10. AwStats
  11. MySQL
  12. Saslauth
  13. phpMyAdmin

Вот тут очень подробно описал как это делал.

На данный момент почтовик работает в продакшене две недели.

 Опубликовано в 13:22

  92 комментария в “Настройка почтового сервера Postfix в Debian Squeeze”

  1. Если буду в Питере – непременно напомню про бутылку :)
    В Thunderbird автоматом логин на сервер выставляется как “username”, а нужно “username@вашдомен.ru” – то есть с полным доменным суффиксом.
    По идее можно реализовать и без доменного суффикса, но у меня так сделано (из базы данные дергать чуть чуть по другому нужно, чтобы без суффикса, и с виртуальными доменами не получится работать).
    RoundCube сам подставляет доменный суффикс, потому его при авторизации писать нет надобности.

  2. У меня вопрос про saslauthd.pid

    что должно быть в этом фаиле ?? и он сам должен создаться или его надо создать руками ?

  3. Создавать его не нужно.
    Вы эту команду выполнили:?
    adduser postfix sasl
    (Пользователь postfix добавляется в группа sasl)

  4. Да выполнял он пишет что
    Пользователь «postfix» уже является членом группы «sasl».

  5. Так а что собственно не работает?

  6. не работает smtp аутентификация!

    mail postfix/smtpd[21187]: warning: SASL authentication failure: Password verification failed
    Apr 11 10:37:42 mail postfix/smtpd[21187]: warning: unknown[192.168.111.1]: SASL PLAIN authentication failed: generic failure
    Apr 11 10:37:42 mail postfix/smtpd[21187]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
    Apr 11 10:37:42 mail postfix/smtpd[21187]: warning: unknown[192.168.111.1]: SASL LOGIN authentication failed: generic failure
    Apr 11 10:37:43 mail postfix/smtpd[21187]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
    Apr 11 10:37:43 mail postfix/smtpd[21187]: warning: SASL authentication failure: Password verification failed
    Apr 11 10:37:43 mail postfix/smtpd[21187]: warning: unknown[192.168.111.1]: SASL PLAIN authentication failed: generic failure
    Apr 11 10:37:43 mail postfix/smtpd[21187]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
    Apr 11 10:37:43 mail postfix/smtpd[21187]: warning: unknown[192.168.111.1]: SASL LOGIN authentication failed: generic failure
    Apr 11 10:37:45 mail postfix/smtpd[21187]: disconnect from unknown[192.168.111.1]

    вот такую штуку пишет!

  7. Apr 11 10:37:42 mail postfix/smtpd[21187]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory

    С этой ошибкой разобрался! Только все равно он меня послал.
    если делаю тестсасл то он мне выдает
    testsaslauthd -u юзер -p пароль
    connect() : No such file or directory

    а в логах сыпит

    postfix/smtpd[1792]: connect from unknown[192.168.111.1]
    Apr 11 12:18:33 mail postfix/smtpd[1792]: warning: SASL authentication failure: Password verification failed
    Apr 11 12:18:33 mail postfix/smtpd[1792]: warning: unknown[192.168.111.1]: SASL PLAIN authentication failed: authentication failure
    Apr 11 12:18:33 mail postfix/smtpd[1792]: disconnect from unknown[192.168.111.1]

  8. Для testsaslauthd скорее всего нужно servicename и socket path указывать.
    А в логах он пишет что имя пользователя или пароль не верны.

  9. Вот здесь:
    mv mail.вашдомен.crt /etc/ssl/certs/
    должно быть
    mv mail.вашдомен.ru.crt /etc/ssl/certs/

  10. Вот здесь:
    PARAMS=”-m /var/spool/postfix/var/run/saslauthd -r”
    наверное должно быть
    OPTIONS=”-m /var/spool/postfix/var/run/saslauthd -r”

  11. cp /etc/ssl/certs/mail.вашдомен.crt /etc/courier/
    cat /etc/ssl/private/mail.вашдомен.key >> /etc/courier/mail.вашдомен.ru.crt
    должно быть:
    cp /etc/ssl/certs/mail.вашдомен.ru.crt /etc/courier/
    cat /etc/ssl/private/mail.вашдомен.ru.key >> /etc/courier/mail.вашдомен.ru.crt

  12. Спасибо.
    Все поправил

  13. root@mail:/# telnet localhost 25
    Trying 127.0.0.1…
    Connected to localhost.localdomain.
    Escape character is ‘^]’.

    Скопировал все со статьи, изменил что надо было изменить(доменное имя, локалку, папку vmail). Но не проходит.. Подскажите пожалуйста

  14. Покажите:
    nmap localhost
    25 порт похоже не доступен.
    Перезапустите postfix и посмотрите что он в логи напишет при попытке запуска.

  15. 22/tcp open ssh
    25/tcp open smtp
    80/tcp open http
    110/tcp open pop3
    443/tcp open https
    993/tcp open imaps
    995/tcp open pop3s
    3306/tcp open mysql
    10024/tcp open unknown
    10025/tcp open unknown
    Все видит.
    Вот логи:
    Jun 21 13:03:20 mail postfix/master[1164]: terminating on signal 15
    Jun 21 13:03:20 mail postfix/master[1313]: daemon started — version 2.7.1, configuration /etc/postfix
    Jun 21 13:03:20 mail postfix/proxymap[1322]: fatal: /etc/postfix/config/mysql-virtual_forwardings.cf: bad string length 0 < 1: dbname =
    Jun 21 13:03:21 mail postfix/cleanup[1321]: warning: private/proxymap socket: service dict_proxy_open: Success
    Jun 21 13:03:21 mail postfix/master[1313]: warning: process /usr/lib/postfix/proxymap pid 1322 exit status 1
    Jun 21 13:03:21 mail postfix/master[1313]: warning: /usr/lib/postfix/proxymap: bad command startup — throttling

  16. Исправил по логам файлы в /etc/postfix/config/.. почемуто везде не было указанно dbname = mail..
    Теперь в логах др ошибка при: telnet localhost 25
    Jun 21 13:19:32 mail postfix/smtpd[1100]: fatal: restriction class `rdl_bogon_ip’ needs a definition
    Jun 21 13:19:33 mail postfix/master[984]: warning: process /usr/lib/postfix/smtpd pid 1100 exit status 1
    Jun 21 13:19:33 mail postfix/master[984]: warning: /usr/lib/postfix/smtpd: bad command startup — throttling

  17. rdl_bogon_ip нужно убрать.
    В первой редакции он был, потом я удалил его (толку от него нет).
    Было:
    smtpd_restriction_classes = verify_sender, rbl_dul_ru, rbl_spamcop, rdl_bogon_ip, white_client_ip, black_client_ip, block_dsl, helo_access, white_client, mx_access
    Нужно:
    smtpd_restriction_classes = verify_sender, rbl_dul_ru, rbl_spamcop, white_client_ip, black_client_ip, block_dsl, helo_access, white_client, mx_access

  18. У меня тоже ошибка fatal: /etc/postfix/config/mysql-virtual_forwardings.cf: bad string length 0 < 1: dbname =

    Как ее исправить?

  19. Проверьте содержимое файла /etc/postfix/config/mysql-virtual_forwardings.cf.
    А лучше покажите его.

  20. Огромный респект автору статьи за подробный мануал, настроил сервер без особых граблей. Единственная недоработка на мой взляд – отсутствие удобной админки для доменов, почтовых ящиков и алиасов. Продвинутый сисадмин конечно же разберется с базой в phpmyadmin, а для эникейщиков сложновато рулить. Вопрос легко решается прикручиванием postfixadmin, что я собсно и сделал на своем сервере.

  21. Спасибо за отзыв. Про postfixadmin нужно почитать на досуге.
    Но мне кажется он немного свяжет руки. Сейчас есть голая база, sql запросы – крути как хочешь. Хотя наверное с ним на много проще должно быть.

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

    Пытаюсь создать таблицу transport в MySQL

    CREATE TABLE transport(
    domain VARCHAR( 128 ) NOT NULL DEFAULT,
    transport VARCHAR( 128 ) NOT NULL DEFAULT,
    UNIQUE KEY domain( domain )
    );

    на что mysql мне говорит

    #1064 – 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 ‘ transport varchar(128) NOT NULL default , UNIQUE KEY domain (domain))’ at line 2

    убираю default, таблица создаётся, но при попытке добавить строки в таблицу domain или transport, записывает туда 0

    не понимаю что он от меня хочет…

  23. Спасибо за внимание, вроде разобрался, добавил ” после default, вроде всё пошло, но вопросы я уверен ещё будут)))

    CREATE TABLE transport(
    domain VARCHAR( 128 ) NOT NULL DEFAULT ”,
    transport VARCHAR( 128 ) NOT NULL DEFAULT ”,
    UNIQUE KEY domain( domain )
    );

  24. кавычки исказились ‘ ‘ две вот таких надо

  25. Поправил

  26. Хорошая статья, делал в точности по ней. Таблицы первоначально заполнил PHPMyAdmin помог.
    Но есть трудность: проверку телнетом на 25 порту постфикс не проходит. Ответа на ehlo нет. Сеанс висит.
    в логе mail.err:
    Apr 16 17:19:13 smtp postfix/proxymap[1852]: fatal: open /etc/postfix/config/mysql-virtual_forwardings.cf: Permission denied

    в логе mail.log постоянно сыплет:
    Apr 16 18:03:57 smtp postfix/proxymap[2007]: fatal: open /etc/postfix/config/mysql-virtual_forwardings.cf: Permission denied
    Apr 16 18:03:58 smtp postfix/smtpd[1811]: warning: private/proxymap socket: service dict_proxy_open: Success
    Apr 16 18:03:58 smtp postfix/master[1735]: warning: process /usr/lib/postfix/proxymap pid 2007 exit status 1
    Apr 16 18:03:58 smtp postfix/master[1735]: warning: /usr/lib/postfix/proxymap: bad command startup — throttling

    Сам mysql-virtual_forwardings.cf:
    user = mail_admin
    password = *********
    dbname = mail
    query = SELECT destination FROM forwardings WHERE sourse=’%s’
    hosts = 127.0.0.1
    права на этот файл не менял.

    Подскажите где можно порыть?

  27. В конце раздела “Ограничения” указано как и какие права нужно выставить на эти файлы.
    Я бы посоветовал не заморачиваться с этим решением.
    Посмотрите в сторону Zimbra. Фильтрует почту гораздо лучше, очень проста в настройке, развивается. Гораздо более функциональна, имеет шикарный web интерфейс.
    Работает стабильно. Вопреки тому, что написана с использованием java – не сильно нагружает систему при десятках пользователей и скромных вычислительных ресурсах.
    При необходимости можно отключить все лишние модули и оставить только почту (вообще это сервер совместной работы включающий почтовик).

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

  29. По мануалу выставил права на файлы:
    root@smtp:/etc/postfix/config# ls -l /etc/postfix/config//mysql-virtual_forwardings.cf
    -rw-r—– 1 root postfix 131 Апр 16 12:15 /etc/postfix/config//mysql-virtual_forwardings.cf
    в логе mail.err без изменений:
    Apr 17 10:34:25 smtp postfix/proxymap[2262]: fatal: open /etc/postfix/config/mysql-virtual_forwardings.cf: Permission denied

    что я делаю не так?

  30. Поправил в статье:
    chmod 644 /etc/postfix/config/*

    Не помню из каких соображений написал так как было.

  31. Last login: Wed Apr 17 14:47:14 2013 from 192.168.1.5
    root@smtp:~# mc

    root@smtp:/var/log# ls -l /etc/postfix/config//mysql-virtual_forwardings.cf
    -rw-r–r– 1 root postfix 132 Апр 17 11:48 /etc/postfix/config//mysql-virtual_forwardings.cf
    в логе mail.err без изменений:
    Apr 17 14:49:33 smtp postfix/proxymap[1813]: fatal: open /etc/postfix/config/mysql-virtual_forwardings.cf: Permission denied

    не помогло

  32. У вас дебиан? Постфикс под каким пользователем работает?
    Это даже лишние права. Для “остальных” чтение не нужно.
    У меня уже нет доступа к старому почтовому серверу, который настраивал. Потому точно проверить не могу.

  33. Debian GNU/Linux 6.0 \n \l
    Под каким работает постфикс не знаю, настраивал всё под рутом.

  34. Birta Levente | 19 Feb 2013 10:04

    proxymap permission denied

    Hi all

    Today I restarted the postfix server because one misconfiguration in the
    master.cf: unknown smtpd restriction: “reject_unauth_destionation”

    Then in the maillog appears other errors, I think not related to above:
    /proxymap[9105]: error: open /etc/postfix/mysql-virtual_forwardings.cf:
    Permission denied
    /proxymap[9105]: error: open /etc/postfix/mysql-virtual_email2email.cf:
    Permission denied
    /proxymap[9105]: error: open /etc/postfix/mysql-virtual_mailboxes.cf:
    Permission denied

    It is a multi instance configuration with postfix 2.10 and mysql lookup
    tables are shared between instances. Until today I’m not even put the
    question that it is possible to share because it worked … ?

    After update to 2.10 (4 days ago) I don’t change anything and worked
    without problems until today.

    Without proxy: work.
    отсюда:http://comments.gmane.org/gmane.mail.postfix.user/235281

    Понимаю, что проблема с использованием proxymap у человека появилась после обновления Postfix до 2.10.
    root@smtp:/var/log# postconf mail_version
    mail_version = 2.7.1
    Хотя у меня постфикс 2.7.1, но я хочу попробовать отключить proxymap. Подскажите как правильно это сделать?

  35. Проверил на тестовой машине. Все должно работать:
    root@debian-squeeze:/etc/postfix# ls -la
    итого 88
    drwxr-xr-x 4 root root 4096 Апр 18 13:01 .
    drwxr-xr-x 74 root root 4096 Апр 18 12:58 ..
    drwxr-xr-x 2 root root 4096 Апр 18 12:59 config
    -rw-r--r-- 1 root root 318 Апр 18 12:58 dynamicmaps.cf
    -rw-r--r-- 1 root root 1473 Апр 18 13:01 main.cf
    -rw-r--r-- 1 root root 5301 Апр 18 12:58 master.cf
    -rw-r--r-- 1 root root 18992 Май 5 2011 postfix-files
    -rwxr-xr-x 1 root root 8729 Май 5 2011 postfix-script
    -rwxr-xr-x 1 root root 24256 Май 5 2011 post-install
    drwxr-xr-x 2 root root 4096 Май 5 2011 sasl
    root@debian-squeeze:/etc/postfix#

    root@debian-squeeze:/etc/postfix/config# ls -la
    итого 12
    drwxr-xr-x 2 root root 4096 Апр 18 12:59 .
    drwxr-xr-x 4 root root 4096 Апр 18 13:01 ..
    -rw-r----- 1 root postfix 143 Апр 18 13:00 mysql-virtual_forwardings.cf
    root@debian-squeeze:/etc/postfix/config#

    root@debian-squeeze:/etc/postfix/config# apt-cache show postfix
    Package: postfix
    Priority: extra
    Section: mail
    Installed-Size: 3340
    Maintainer: LaMont Jones
    Architecture: amd64
    Version: 2.7.1-1+squeeze1

    Может на каталог у вас нет прав?
    Проблема у вас не в proxymap. Проблема с доступом к файлу:
    Apr 17 14:49:33 smtp postfix/proxymap[1813]: fatal: open /etc/postfix/config/mysql-virtual_forwardings.cf: Permission denied

  36. Прав более чем:
    root@smtp:/etc/postfix# ls -la
    итого 100
    drwxr-xr-x 4 root root 4096 Апр 17 10:57 .
    drwxr-xr-x 86 root root 4096 Апр 18 10:56 ..
    drwxr-x— 2 root root 4096 Апр 16 15:29 config
    -rw-r–r– 1 root root 425 Апр 16 10:35 dynamicmaps.cf
    -rw-r–r– 1 root root 14837 Апр 17 14:19 main.cf
    -rw-r–r– 1 root root 5939 Апр 16 16:47 master.cf
    -rw-r–r– 1 root root 18992 Май 5 2011 postfix-files
    -rwxr-xr-x 1 root root 8729 Май 5 2011 postfix-script
    -rwxr-xr-x 1 root root 24256 Май 5 2011 post-install
    drwxr-xr-x 2 root root 4096 Апр 16 16:06 sasl
    root@smtp:/etc/postfix# mc

    root@smtp:/etc/postfix/config# ls -la
    итого 44
    drwxr-x— 2 root root 4096 Апр 16 15:29 .
    drwxr-xr-x 4 root root 4096 Апр 17 10:57 ..
    -rwxr-xr-x 1 root postfix 0 Апр 16 15:27 access_vip_sender
    -rwxr-xr-x 1 root postfix 0 Апр 16 15:26 black_client_ip
    -rwxr-xr-x 1 root postfix 3017 Апр 16 15:29 block_dsl
    -rwxr-xr-x 1 root postfix 779 Апр 16 15:28 helo_checks
    -rwxr-xr-x 1 root postfix 645 Апр 16 15:28 mx_access
    -rwxr-xr-x 1 root postfix 133 Апр 16 12:11 mysql-virtual_domains.cf
    -rwxr-xr-x 1 root postfix 119 Апр 16 12:18 mysql-virtual_email2email.cf
    -rwxr-xr-x 1 root postfix 132 Апр 18 10:29 mysql-virtual_forwardings.cf
    -rwxr-xr-x 1 root postfix 188 Апр 16 12:17 mysql-virtual_mailboxes.cf
    -rwxr-xr-x 1 root postfix 128 Апр 17 11:50 mysql-virtual_transports.cf
    -rwxr-xr-x 1 root postfix 0 Апр 16 15:26 white_client
    -rwxr-xr-x 1 root postfix 29 Апр 16 15:30 white_client_ip

    вот часть моего main.cf :
    #Список доменов, для которых почта будет доставляться локально, а не пересылаться на другой хост.
    mydestination = smtp.tele7.perm.ru, localhost, localhost.tele7.perm.ru
    у вас:
    mydestination = $myhostname, localhost, localhost.$mydomain, $myhostname.$mydomain

    может я не указал вот это $myhostname.$mydomain (не понимаю как правильно описать для себя) и в этом дело?

  37. Вот это вам поможет:
    chmod 755 /etc/postfix/config/

  38. Да это помогло, хотя сам мог догадаться я.
    Щас вот другой какой-то косяк:
    Apr 18 16:53:50 smtp postfix/smtpd[2003]: fatal: open database /etc/postfix/config/white_client_ip.db: No such file or directory
    Какая база и откуда это вылезло буду разбираться. Спасибо за поддержку.

  39. Вдогонку: после
    chmod 755 /etc/postfix/config/
    в папке /etc/postfix/config/ появился файл mysql-virtual_forwardings.db
    подозреваю, что именно из-за первоначальных разрешений и появлялась та ошибка.
    Сори за нубство

  40. Подскажите чем завершилась проблема “mail imapd-ssl: Unexpected SSL connection shutdown.”Не как не могу решить.  Debian 8.1

  41. Здравствуйте.

    У меня в поддержке уже дано нет почтовых серверов на чистом postfix, потому не смогу подсказать.