Установите и настройте postfix и dovecot

Настройка аутентификации на Postfix

Аутентификация на postfix будет выполняться методом dovecot. Для этого устанавливаем его. Заодно, устанавливаем и postfix (на случай, если его нет еще в системе). В зависимости от используемой операционной системы используем разные команды.

а) если используем Ubuntu / Debian:

apt-get update

apt-get install postfix dovecot-imapd dovecot-pop3d

б) если используем CentOS / Red Hat:

yum install postfix dovecot

После установки пакетов, разрешаем автозапуск dovecot и postfix:

systemctl enable postfix dovecot

Открываем на редактирование конфигурационный файл нашего MTA Postfix:

vi /etc/postfix/main.cf

Добавляем строки (или меняем значения):

smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_relay_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination

* где:

  • smtpd_sasl_type — тип плагина, который используется для SASL-аутентификации. Командой postconf -a мы можем получить список механизмов аутентификации, которые поддерживаются почтовой системой.
  • smtpd_sasl_auth_enable — разрешает или запрещает аутентификацию по механизму SASL.
  • smtpd_sasl_path — путь до файла для обмена аутентификационной информацией. Используется для взаимодействия нескольких систем — в нашем примере Postfix + Dovecot.
  • smtpd_relay_restrictions — правила разрешения и запрета использования MTA при пересылке. В нашем случае:
    • permit_mynetworks — разрешить отправку с компьютеров, чьи IP-адреса соответствуют настройке mynetworks.
    • permit_sasl_authenticated — разрешить отправку писем тем, кто прошел авторизацию.
    • reject_unauth_destination — запретить всем, кто не прошел проверку подлинности.

Проверяем корректность настройки:

postconf > /dev/null

Если команда не вернула ошибок, перезапускаем Postfix:

systemctl restart postfix

Переходим к настройке dovecot — открываем файл:

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

… и приводим опцию service auth к следующему виду:

service auth {
  …
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
  …
}

* если соответствующей секции unix_listener нет, то ее нужно создать

Обратите внимание, что для обмена аутентификационными данными мы применяем файл /var/spool/postfix/private/auth, который в конфигурационном файле postfix был указан, как private/auth

Отключаем требование ssl для аутентификации (на текущем этапе нам это не нужно):

vi /etc/dovecot/conf.d/10-ssl.conf

Проверяем, чтобы значение ssl не было required:

ssl = yes

* нас устроит оба варианта — yes или no.

Настройки аутентификации приводим к следующему виду:

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

auth_mechanisms = plain login

* данные механизмы позволяют передачу данных в открытом виде.

В этом же файле проверяем, что снят комментарий со следующей строки:

!include auth-system.conf.ext

Проверяем корректность настройки dovecot:

doveconf > /dev/null

Если команда ничего не вернула, перезапускаем сервис:

systemctl restart dovecot

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

useradd smtptest

passwd smtptest

Мы настроили простую аутентификацию на сервере SMTP. Для проверки можно воспользоваться любым почтовым клиентом. Пример настройки thunderbird:

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

Мы завершили настройку аутнтификации на postfix при отправке письма. Добавим проверку данных через LDAP.

Настройка DNS

Смотрим содержимое файла txt, который был сформирован при генерировании сертификата для домена:

cat /etc/opendkim/dmosk.ru/relay.txt

* где dmosk.ru — домен, для которого производилась настройка.

И используя данное содержимое, в панели управления нашим DNS создаем TXT-запись следующего формата:

relay._domainkey IN TXT «v=DKIM1; k=rsa; p=MIGfMA0GCSqG…rhyaj8OcbwIDAQAB»

* где relay — название нашего селектора MIGfMA0GCSqG…rhyaj8OcbwIDAQAB — сокращенная запись открытого ключа (она длиннее).

Дополнительные необязательные записи

_domainkey IN TXT «o=~; [email protected]»

* где o=~ означает, что не все сообщения подписываются для домена (o=- — говорит, что все письма используют DKIM).

_adsp._domainkey IN TXT «dkim=all»

* all запрещает принимать письма от домена без цифровой подписи. Другие варианты: discardable — блокировать сообщения на стороне получателя, unknown — по умолчанию (такую запись создавать не обязательно).

Настройка OpenDKIM и Postfix

OpenDKIM

Переносим старый конфигурационный файл opendkim и создаем новый.

FreeBSD:

mv /usr/local/etc/mail/opendkim.conf /usr/local/etc/mail/backup.opendkim.conf

ee /usr/local/etc/mail/opendkim.conf

Linux:

mv /etc/opendkim.conf /etc/backup.opendkim.conf

vi /etc/opendkim.conf

И приводим его к следующему виду:

AutoRestart             Yes
AutoRestartRate         10/1h
Umask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
UserID                  opendkim:opendkim
Socket                  inet:12301@localhost

* все параметры можно оставить, как в данном примере, за исключением Socket — можно указать любой другой порт, вместо 12301.

Создаем каталог /etc/opendkim (например, в Debian он не создается автоматически):

mkdir /etc/opendkim

Создаем файл доверенных узлов. В него пока войдут имя локального хоста (localhost) и его IP-адрес, которые будут приняты, как доверенные и подписаны:

vi /etc/opendkim/TrustedHosts

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

127.0.0.1
localhost

* в данный файл мы заносим все IP-адреса и сети почтовых серверов, которые могут использовать наш сервер как почтовый релей. Таким образом, если в вашей системе используется подобная конфигурация, в файл TrustedHosts мы должны добавить адреса данных почтовых серверов.

Создаем остальные конфигурационные файлы (если их нет):

touch /etc/opendkim/{KeyTable,SigningTable}

Открываем файл /etc/default/opendkim:

vi /etc/default/opendkim

… его либо не должно быть, либо он должен быть пустой, либо проверяем строку с настройкой SOCKET и приводим ее к виду:

SOCKET=inet:12301@localhost

Запускаем службу opendkim.

На FreeBSD:

Сначала добавляем демона в rc.conf:

echo ‘milteropendkim_enable=»YES»‘ >> /etc/rc.conf

echo ‘milteropendkim_uid=»opendkim»‘ >> /etc/rc.conf

* первая команда разрешает запуск демона, вторая — принудительно заставляет его запускаться от пользователя opendkim.

И запускаем его:

service milter-opendkim start

На Linux:

а) CentOS: 

systemctl enable opendkim —now

* для старый систем это будут команды chkconfig opendkim on и service opendkim start.

б) Ubuntu / Debian:

systemctl enable opendkim

systemctl restart opendkim

Postfix

Открываем конфигурационный файл.

FreeBSD:

ee /usr/local/etc/postfix/main.cf

Linux:

vi /etc/postfix/main.cf

Добавляем или редактируем:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

* если smtpd_milters и non_smtpd_milters присутствуют в конфигурационном файле, то приведенные в данном примере значения нужно дописать к имеющимся.
** 12301 — порт работы opendkim, который был задан в opendkim.conf.

Перезапускаем Postfix:

systemctl restart postfix

или:

service postfix restart

Этап 6. Установка и настройка Webmail в Debian.

23. Пользователи будут управлять своей электронной почтой с помощью клиента Rainwop Webmail. Перед установкой почтового агента Rainloop сначала установите HTTP-сервер Apache и модули PHP, необходимые Rainloop, с помощью следующей команды:

# apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml

24. После установки веб-сервера Apache перейдите в директорию /var /www /html /, удалите файл index.html и установите Rainloop Webmail.

# cd /var/www/html/
# rm index.html 
# curl -sL https://repository.rainloop.net/installer.php | php

25. После установки клиента Rainwoo Webmail перейдите на IP-адрес своего домена и войдите в веб-интерфейс администратора Rainloop с учетными данными по умолчанию:

http://192.168.0.102/?admin
User: admin
Password: 12345

26. Перейдите в меню «Domains», нажмите кнопку «Add Domain» и добавьте настройки доменного имени, как показано на следующем скриншоте.

27. После того, как вы добавили настройки своего домена, выйдите из интерфейса администратора Ranloop и введите свой IP-адрес в браузере, чтобы войти в систему из клиента электронной почты.

После успешного входа в электронную почту Rainloop вы должны увидеть отправленное ранее из командной строки сообщение в папке «Inbox».

http://192.168.0.102
User: [email protected]
Pass: the matie password

27. При добавлении нового пользователя используется команда useradd с флагом -m, чтобы создать домашний каталог пользователя. Но сначала убедитесь, что вы настроили переменную пути Maildir для каждого пользователя с помощью приведенной ниже команды.

# echo 'export MAIL=$HOME/Maildir' >> /etc/profile
# useradd -m user3
# passwd user3

28. Если вы хотите перенаправить все сообщения электронной почты, предназначенные root, на заданную локальную учетную запись электронной почты из системы, выполните приведенные ниже команды. Все письма, предназначенные для учетной записи root, будут перенаправлены вашему пользователю, как показано на рисунке ниже.

# echo "root: test_mail" >> /etc/aliases
# newaliases

Это все! Вы успешно установили и настроили почтовый сервер в своей системе, чтобы локальные пользователи могли общаться по электронной почте. Однако такая конфигурация почты не защищена должным образом, и ее рекомендуется развертывать только для небольших сетей, находящихся под вашим полным контролем.

Другие статьи на нашем сайте об установке и настройке почтового сервера Postfix:

  • Настройка почтового сервера Postfix
  • Как с помощью шифрования сделать почтовый сервер более безопасным
  • Приемы работы в Ubuntu. Глава 10: Сервер малого офиса / домашнего офиса
  • Перевод почтового сервера с Kerio Mail на Linux
  • Как в различных ситуациях конфигурировать почтовый сервер, использующий Postfix и Dovecot
  • Защита Linux-сервера

Скачайте и настройте Postfix Admin

На момент написания это последняя стабильная версия Postfix Admin.

Загрузите архив Postfix Admin, используя следующую команду wget :

После завершения загрузки извлеките архив :

Переместите исходные файлы Postfix Admin в каталог и создайте каталог (smarty cache):

И Nginx, и PHP-FPM работают с пользовательскими поэтому нам нужно изменить владельца на этого пользователя:

Postfix Admin будет использовать базу данных MySQL для хранения информации о пользователях, доменах и конфигурации приложения.

Войдите в оболочку MySQL :

Создайте нового пользователя MySQL и базу данных, используя следующие команды:

Не забудьте изменить пароль ( ) на более безопасный.

Вместо редактирования конфигурации администратора Postfix по умолчанию мы создадим новый файл с именем который перезапишет настройки приложения по умолчанию:

Откройте файл с вашим текстовым файлом:

Вставьте следующий код php:

/var/www/postfixadmin/config.local.php

Сохраните и закройте файл.

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

Затем выполните следующую команду, чтобы создать схему для базы данных Postfix Admin:

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

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

Результат должен выглядеть примерно так:

Не забудьте изменить пароль ( ) для учетной записи на более безопасный.

Добавление новых записей dkim

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

DKIM_DOMAIN=domain.zone

* где вместо domain.zone ставим наш домен.

Создаем каталог для размещения ключей домена:

mkdir -p /etc/opendkim/$DKIM_DOMAIN

Генерируем ключ:

opendkim-genkey -D /etc/opendkim/$DKIM_DOMAIN/ —domain $DKIM_DOMAIN —selector relay

Задаем нужные права:

chown :opendkim /etc/opendkim/$DKIM_DOMAIN/*

chmod g+rw /etc/opendkim/$DKIM_DOMAIN/*

Смотрим содержимое файла txt:

cat /etc/opendkim/$DKIM_DOMAIN/relay.txt

… и используя данное содержимое, в панели управления нашим DNS создаем TXT-запись.

Добавляем соответствующие настройки в файлы TrustedHosts, KeyTable, SigningTable:

echo «*.$DKIM_DOMAIN» >> /etc/opendkim/TrustedHosts

echo «relay._domainkey.$DKIM_DOMAIN $DKIM_DOMAIN:relay:/etc/opendkim/$DKIM_DOMAIN/relay.private» >> /etc/opendkim/KeyTable

echo «*@$DKIM_DOMAIN relay._domainkey.$DKIM_DOMAIN» >> /etc/opendkim/SigningTable

Перезапускаем службу.

а) если Linux:

systemctl reload opendkim

б) если FreeBSD:

service milter-opendkim restart

Готово.

Шаг 3. Начинаем установку необходимых пакетов:

# apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server dovecot-common dovecot-imapd dovecot-pop3d libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl telnet mailutils

Во время установки вам будет задан ряд наводящих на мысли вопросов навроде пароля суперпользователя mysql. Указывайте то, что не забудете. И лучше сразу записывать куда-нибудь подальше.

Далее, начнется конфигурирование Postfix (диалоговые окна), в которых нужно указать, что наш почтовый сервер является Интернет-сайтом, после чего указать наше hostname в поле ввода имени хоста. Тут указываем полное FQDN-имя:

Остальные настройки будем вносить непосредственно в файл /etc/postfix/main.cf.

Adding TLS/SSL

There are three options for transferring data to Postfix (smtpd):

  1. Do not use TLS/SSL at all (only unsecure connections are available).
  2. Use TLS/SSL, if possible. Fall back to unsecure connections otherwise.
  3. Only allow TLS/SSL (unsecure connections are not available).

STARTTLS connections start unencrypted via the regular smtp port 25. If both sides agree the rest of the data transfer is encrypted, still using port 25.

Pure TLS/SSL uses it own port, usually smtps (465). See below.

Recent Postfix versions employ the parameter to control TLS encryption (valid values are none, may or encrypt).

Previously two parameters ( and ) were used. They can be unset. See also the Debian bug report .

With the following commands TLS is enforced (no STARTTLS) and the old configuration parameters are reset to default values:

~# postconf -e smtpd_tls_security_level=encrypt
~# postconf -e smtpd_use_tls
~# postconf -e smtpd_enforce_tls

postgrey

Добавляем список серых адресов, он же грей-листинг. Что это такое? Это механизм, также использующийся для фильтрации спама. Хотя умные спамеры этот механизм научились уже обходить, все равно это снижает количество спама, которое до вас дойдет. Сам механизм работает так: на ваш сервер отправляется письмо, ваш почтовый сервер делает вид, что он недоступен в данный момент. Нормальный почтовый сервер получит ответ и перешлет письмо еще раз через некоторый интервал времени. Если письмо к нам приходит второй раз, то оно уже идет в обработку почтовым сервером, то есть, сначала проверяется на спам, а затем уже доставляется адресату. Вот такая многоступенчатая фильтрация получается.
И вместе с настройкой грэй-листинга донастроим безопасность почтового сервера.
Устанавливаем пакеты:

apt-get install postgrey

Редактируем файл /etc/postfix/main.cf
Меняем строчку

mynetworks =

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

mynetworks = 127.0.0.1/32 192.168.0.1/24

Если у вас включена sasl-аутентификация (а она должна быть), то у вас в этом файле должны присутствовать все следующие строчки:

default_transport = smtp
smtp_sasl_path = smtpd
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

Если вдруг она у вас не используется, то все строки с опциями, в названии которых содержится «sasl» можно закомментировать.
Теперь в том же файле необходимо добавить следующее:

smtpd_recipient_restrictions = 
	permit_sasl_authenticated,
	reject_sender_login_mismatch,
	reject_unknown_sender_domain,
	reject_unknown_hostname,
	reject_unknown_client,
	reject_invalid_hostname,
	reject_unverified_sender,
	reject_non_fqdn_sender,
	reject_non_fqdn_recipient,
	reject_unauth_destination,
	reject_unauth_pipelining,
	reject_unlisted_recipient,
	reject_authenticated_sender_login_mismatch,
	check_policy_service inet:127.0.0.1:10023

Сначала у нас все письма будут верифицироваться, и если они проходят все указанные проверки, то будут передаваться на обработку postgrey, что и указывается в последней строчке. Postgrey запишет в свою базу данное сообщение и если оно придет повторно через определенный интервал времени, как происходит с хорошими письмами, то оно будет передано дальше по цепочке и в итоге может попасть к получателю.
Сохраняем файл и перезапускаем сервис postfix

service postfix restart

И теперь у нас работают три механизма защиты от спама, которого должно стать заметно меньше, вплоть до нуля.
Если есть вопросы, буду рад вашим комментариям.

Настройка Dovecot

Dovecot — это IMAP и POP3 сервер, который позволит нам забирать почту программами сборщиками. Это гибкий и безопасный инструмент в системе Linux.

Нам нужно открыть на редактирование файл /etc/postfix/master.cf и добавить в конце следующие ниже строки:

Сохраним для потомков изначальный конфигурационный файл Dovecot:

После чего откроем файл /etc/dovecot/dovecot.conf на редактирование и заменим всё его содержимое указанным ниже кодом. Ящик «[email protected]» следует заменить на желаемый:

MySQL будет сохранять в себе пароли доступа, поэтому мы сохраним копию первоначального /etc/dovecot/dovecot-sql.conf, а потом произведём настройку:

Содержимое исходного файла /etc/dovecot/dovecot-sql.conf полностью заменим на нижеуказанное, не забудем поменять пароль «mail_admin_password» на актуальный:

На этом настройка Dovecot завершена, следует перезагрузить его:

Проверим файл /var/log/mail.log на отсутсвие ошибок:

И найдём примерно следующие строки:

Перед началом тестирования следует установить права и владельца на файл конфигурации Dovecot /etc/dovecot/dovecot.conf:

Проверим корректность работы POP3 сервера, для этого мы подключимся к POP3 серверу через терминал:

После ввода команды в консоли должно отобразиться примерно следующие:

Выйдем из режима терминала, пока он нам больше не нужен:

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

Настройка почтовых программ

Пользователь может забрать почту любой доступной почтовой программой. В качестве IMAP/POP3 и SMTP сервера следует указать домен, записанный в MX записи интерфейса DNS, например «mail.example.com». Логин — это почтовый адрес пользователя, как уже говорилось это необходимо при мультидоменной конфигурации, которую мы и реализовали. Шифрование входящей почты — SSL, исходящей — TLS.

Чтобы забирать почту пользователя root, в нашем примере его почтовый ящик «[email protected]», следует настроить переадресацию в таблице forwardings:

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

SPF and multiple external ip addresses

Explanation

Recently I have expanded the ip addresses these systems are using externally to support multiple instances of port-based services like https (adding :oddport doesn’t impress the customers.) I could have expanded or added more liberal SPF record values, or added more forward and reverse DNS records but I wanted to stick with less ip addresses.

So to recap my system has:

  • eth1 <public ip with spf published>

  • eth1:1 <public ip for extra port-based services>

  • eth0 <private ip on>

By using the settings in /etc/postfix/master.cf, /etc/postfix/main.cf and /etc/postfix/transport as outlined above I was able to get my outgoing smtp traffic to use my SPF published ip address once again.

Make SPF and multiple external ip addresses

If you are trying to implement SPF records while binding to one external ip address and still working with dual-homed multiple ip aliased systems, or have any other reason to support multi-homed systems with multiple ip addresses but want to limit postfix to use only two of them try this.

  • /etc/postfix/master.cf

    clone the smtp (not smtpd) service. Set the first one to use Rename the second to smtpinternal and use

 smtp      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=<spf published ip address>
 smtpinternal      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=<internal ip address>
  • /etc/postfix/main.cf

    Use transport_maps for routing

 transport_maps = hash:/etc/postfix/transport
  • /etc/postfix/transport

    Map a transport for your internal domain.

 .internal smtpinternal:

Optional:

  • /etc/postfix/main.cf

    Use the inet_interfaces setting to only listen on the ip addresses you want to.
    inet_interfaces = 127.0.0.1, ,

Настройка saslauthd для доступа к MySQL

Saslauthd — это демон аутентификации, который работает посредствам SASL. Нам он нужен, чтобы связать Postfix с MySQL и позволять им совместно работать.

Для начала создадим директорию для saslauthd:

Сохраним начальную версию файла:

Откроем на редактирование файл /etc/default/saslauthd и установим в нём следующие значения:

После этого нам нужно создать файл /etc/pam.d/smtp:

И внести в него следующие строки. Укажите нужный пароль для пользователя «mail_admin», заменив «mail_admin_password» на верное значение:

Создадим файл /etc/postfix/sasl/smtpd.conf:

И внесём в него следующие строки, так же заменив пароль на верный:

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

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

На этом конфигурирование saslauthd завершено. Далее мы настроим Dovecot на использование базы данных MySQL для IMAP/POP3 идентификации.

Этап 5: Установка и настройка Dovecot IMAP в Debian

14. Dovecot IMAP — это агент доставки почты, который мы будем использовать для доставки сообщений электронной почты в почтовые ящики локального получателя. IMAP — это протокол, который работает на портах 143 и 993 (SSL) , и отвечает за чтение, удаление или перемещение писем для нескольких пользователей электронной почты.

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

Вышеперечисленное не относится к протоколу POP3. Протокол POP3 не позволяет пользователям создавать несколько каталогов на сервере для сортировки почты. У вас есть только папка «Входящие» для управления почтой.

Установка основного сервера Dovecot и пакета Dovecot IMAP в Debian производится с помощью команды:

# apt install dovecot-core dovecot-imapd

15. После того, как Dovecot установлен в вашей системе, отредактируйте файлы dovecot. Сначала откройте файл /etc/dovecot/dovecot.conf, найдите и раскомментируйте следующую строку:

listen = *, ::

16. Затем откройте /etc/dovecot/conf.d/10-auth.conf для редактирования, найдите и измените строки, чтобы они выглядели, как показано ниже.

disable_plaintext_auth = no
auth_mechanisms = plain login

17. Откройте файл /etc/dovecot/conf.d/10-mail.conf и добавьте приведенную ниже строку, чтобы использовать Maildir вместо формата Mbox для хранения электронных писем.

mail_location = maildir:~/Maildir

18. И последний файл для редактирования — /etc/dovecot/conf.d/10-master.conf. Здесь найдите блок Postfix smtp-auth и внесите следующие изменения:

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

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

# systemctl restart dovecot.service 
# systemctl status dovecot.service 
# netstat -tlpn

20. Проверьте, правильно ли работает почтовый сервер, для этого добавьте в систему новую учетную запись пользователя, подключитесь к SMTP-серверу с помощью команд telnet или netcat, и отправьте письмо новому пользователю, как показано ниже.

# adduser matie
# nc localhost 25
# ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit

21. Проверьте, пришло ли письмо в почтовый ящик нового пользователя:

# ls /home/test_mail/Maildir/new/

22. Кроме того, вы можете подключиться к почтовому ящику пользователя из командной строки по протоколу IMAP, как показано ниже. Новая почта должна быть в папке «Inbox» пользователя.

# nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT

Courier IMAP

Install:

# apt-get install courier-base courier-authdaemon courier-authlib-mysql \
courier-imap courier-imap-ssl courier-ssl

Open and change the following:

ADDRESS=0

to

ADDRESS=0.0.0.0

This will make Courier IMAP to listen on IPv4 only.

How file looks like:

# grep -ve "^#" -ve "^$" /etc/courier/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authuserdb authpam authpgsql authldap authmysql authcustom authpipe"
daemons=5
authdaemonvar=/var/run/courier/authdaemon
DEBUG_LOGIN=2
DEFAULTOPTIONS=""
LOGGEROPTS=""

How file looks like:

# grep -ve "^#" -ve "^$" /etc/courier/authmysqlrc
MYSQL_SERVER		localhost
MYSQL_USERNAME		mail
MYSQL_PASSWORD		passwd
MYSQL_PORT		0
MYSQL_OPT		0
MYSQL_DATABASE		postfix
MYSQL_USER_TABLE	users
MYSQL_CRYPT_PWFIELD	crypt
MYSQL_UID_FIELD		uid
MYSQL_GID_FIELD		gid
MYSQL_LOGIN_FIELD	id
MYSQL_HOME_FIELD	home
MYSQL_NAME_FIELD	name
MYSQL_MAILDIR_FIELD	concat(home,'/',maildir)
MYSQL_WHERE_CLAUSE enabled=1

anti-spam: smtp restrictions

  • The first fight starts at your server so this should be added to any email server that you setup. This makes sure that any computer that tries to send an email to you has a valid domain name. (spammers use ex. myhomepc as a domain name. This will stop them from spamming you.)
  • Insert this in your /etc/postfix/main.cf:

smtpd_recipient_restrictions = reject_invalid_hostname,
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

Установка и конфигурирование SpamAssassin

mcedit /etc/spamassassin/local.cf
# Указываем какие подсети будут "доверенными", письма с которых не будут считаться спамом
trusted_networks                10.0.0.0/8
# Включаем bayes обучение системы
use_bayes                       1
use_bayes_rules                 1
# Указываем путь до базы bayes
bayes_path                      /var/lib/amavis/.spamassassin/bayes
# SA будет автоматически добавлять сообщения, распознанные как SPAM
#на 100% или на 100% как не SPAM сообщения, в bayes базу данных
bayes_auto_learn                1
# Не отключаем разные сетевые проверки
skip_rbl_checks                 0
# Указываем SA использовать Razor
use_razor2                      1
# Указываем SA не использовать DCC
use_dcc                         0
# Указываем SA не использовать Pyzor
use_pyzor                       0
#Следующие строчки указывают, на каких языках Вам обычно приходят письма. Если
#проверяемое письмо будет на другом языке, то его Spam-Level повысится.
ok_languages                    en ru
ok_locales                      en ru
/etc/init.d/amavis restart

Testing: Part 1

Ensure all services are restarted, just in case.

# /etc/init.d/mysql restart
# /etc/init.d/postfix restart
# /etc/init.d/courier-authdaemon restart
# /etc/init.d/courier-imap restart
# /etc/init.d/courier-imap-ssl restart

Make sure Postfix, CourierIMAP and MySQL Services are Running

# netstat -nltp | egrep '25|143|3306'
tcp   0   0 127.0.0.1:3306    0.0.0.0:*    LISTEN      10970/mysqld    
tcp   0   0 0.0.0.0:143       0.0.0.0:*    LISTEN      13872/couriertcpd
tcp   0   0 0.0.0.0:25        0.0.0.0:*    LISTEN      13116/master
$ dig MX +short solutin.net
10 mx1.solutin.net.
$ dig A +short mx1.solutin.net
54.X.Y.Z

Check with Telnet if Postfix Can Receive Emails

$ telnet solutin.net 25
Trying 54.X.Y.Z..
Connected to solutin.net.
220 *************************
EHLO solutin.net
250-solutin.net
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-XXXXXXXA
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: 
250 2.1.0 Ok
RCPT TO: 
250 2.1.5 Ok
data
354 End data with .
this is a tets email
to check postfix installation from telnet
.
250 2.0.0 Ok: queued as 85E663061
quit
221 2.0.0 Bye
Connection closed by foreign host.
# ls -l /var/spool/mail/virtual/tomas/new/
total 4
-rw------- 1 virtual virtual 338 Dec  1 15:39 1417448343.Vca01I310fM579863.solutin.net

Check logs if the above fails:

# tail /var/log/mail.log 
# tail /var/log/mysql/mysql.log

Retrieve Emails via IMAP

We use Icedove (aka Thunderbird on Debian) here. Below is a short excerpt from mail.log showing what happens when we connect with Icedove:

imapd: Connection, ip=
authdaemond: received auth request, service=imap, authtype=login
authdaemond: authmysql: trying this module
authdaemond: authmysqllib: connected. Versions: header 50524, client 50540, server 50540
authdaemond: SQL query: SELECT id, crypt, "", uid, gid, home, concat(home,'/',maildir), "", name, "" FROM users WHERE id = ''  AND (enabled=1)
authdaemond: password matches successfully
authdaemond: authmysql: sysusername=, sysuserid=5000, sysgroupid=5000, homedir=/var/spool/mail/virtual, , fullname=Tomas, maildir=/var/spool/mail/virtual/tomas/, quota=, options=
authdaemond: authmysql: clearpasswd=, passwd=$5$2b10ed288afd8f90$9LLQe7/TKgrDbLcQlb8V11NTs28bDGPCU.KoVOWYuz7
authdaemond: Authenticated: sysusername=, sysuserid=5000, sysgroupid=5000, homedir=/var/spool/mail/virtual, , fullname=Tomas, maildir=/var/spool/mail/virtual/tomas/, quota=, options=
authdaemond: Authenticated: clearpasswd=passwd, passwd=$5$2b10ed288afd8f90$9LLQe7/TKgrDbLcQlb8V11NTs28bDGPCU.KoVOWYuz7
imapd: LOGIN, , ip=, port=, protocol=IMAP

Настройка Postfix на Debian с пользователями в базе данных

Всем привет! И вот наконец дописал я эту статью, которая стала сборником различных методов настройки почты на сервере Debian.

При написании использовались разные источники, поэтому элементы кода могут вам быть знакомыми. Я благодарен форумам за то, что наставили на путь истинный в войне с postfix!

В начале нам потребуется вот что:

  1. Регистрируем доменное имя, какое нам больше нравится. Если хотите почту вида @litl-admin.ru, то регистрировать нужно litl-admin.ru. Конечно, придумайте своё; Сделать это можно у крупных регистраторов или у, практически, любого хостера.
  2. Арендуем VDS с предустановленной Linux. В общем виде – это виртуальная машина с выделенным IP, на которой мы являемся root и можно ставить все, что угодно. Само-собой и настраивать тоже. Обходится эта услуга не очень дорого, порядка 1400 рублей в год, что весьма и весьма неплохо;
  3. Прописываем MX запись в DNS настройках нашего доменного имени с указанием IP-адреса нашего VDS;

Так, это всё организационные моменты. Теперь будем настраивать наш сервер.

Testing: Part 2

# /etc/init.d/mysql restart
# /etc/init.d/postfix restart
# /etc/init.d/courier-authdaemon restart
# /etc/init.d/courier-imap restart
# /etc/init.d/courier-imap-ssl restart
# /etc/init.d/saslauthd restart
# netstat -nltp | egrep '25|587|465|143|993|3306'
tcp   0   0 127.0.0.1:3306  0.0.0.0:*     LISTEN    18177/mysqld    
tcp   0   0 0.0.0.0:587     0.0.0.0:*     LISTEN    20534/master    
tcp   0   0 0.0.0.0:143     0.0.0.0:*     LISTEN    17434/couriertcpd
tcp   0   0 0.0.0.0:465     0.0.0.0:*     LISTEN    20534/master    
tcp   0   0 0.0.0.0:25      0.0.0.0:*     LISTEN    20534/master    
tcp   0   0 0.0.0.0:993     0.0.0.0:*     LISTEN    20710/couriertcpd
# nmap -Pn -p T:25,143,587,465,993 mx1.solutin.net | grep open
25/tcp  open  smtp
143/tcp open  imap
465/tcp open  smtps
587/tcp open  submission
993/tcp open  imaps

External tools that may become handy:

  1. http://mxtoolbox.com/SuperTool.aspx
  2. http://www.checktls.com/perl/TestReceiver.pl

Вывод

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

Базовая конфигурация Postfix не может считаться полноценным почтовым сервером, ведь отсутствует множество других важных компонентов. Тем не менее, задачи локальной отправки/приема почты по SMTP этот MTA выполняет на отлично.

comments powered by HyperComments

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: