Настройка аутентификации на 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=~; r=postmaster@dmosk.ru»
* где 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: matie@tecmint.com 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):
- Do not use TLS/SSL at all (only unsecure connections are available).
- Use TLS/SSL, if possible. Fall back to unsecure connections otherwise.
- 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 на редактирование и заменим всё его содержимое указанным ниже кодом. Ящик «postmaster@example.com» следует заменить на желаемый:
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, в нашем примере его почтовый ящик «root@mysrv.example.com», следует настроить переадресацию в таблице 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!
В начале нам потребуется вот что:
- Регистрируем доменное имя, какое нам больше нравится. Если хотите почту вида @litl-admin.ru, то регистрировать нужно litl-admin.ru. Конечно, придумайте своё; Сделать это можно у крупных регистраторов или у, практически, любого хостера.
- Арендуем VDS с предустановленной Linux. В общем виде – это виртуальная машина с выделенным IP, на которой мы являемся root и можно ставить все, что угодно. Само-собой и настраивать тоже. Обходится эта услуга не очень дорого, порядка 1400 рублей в год, что весьма и весьма неплохо;
- Прописываем 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:
- http://mxtoolbox.com/SuperTool.aspx
- http://www.checktls.com/perl/TestReceiver.pl
Вывод
В минимальной конфигурации Postfix может отправлять и получать почту по протоколу SMTP, использует локальные учетные записи системы для хранения сообщений. Базовая настройка, которую обязательно нужно выполнить, подразумевает определение основного доменного имени почтового сервера, которое в последующем используется во многих конфигурационных параметрах MTA как основа.
Базовая конфигурация Postfix не может считаться полноценным почтовым сервером, ведь отсутствует множество других важных компонентов. Тем не менее, задачи локальной отправки/приема почты по SMTP этот MTA выполняет на отлично.
comments powered by HyperComments