Проверьте tail -f /var/log/mail.log
и посмотрите на коды ответов 4.X.X (задержки), если там ничего нет, значит mutt не завершает работу с локальной почтой (или у вас syslog перенаправляет ваши maillogs в другое место)
Вы должны либо настроить mutt на использование smart-host с auth
~/. muttrc
set imap_user = “YOUR-USERNAME@gmail.com”
set imap_pass = “YOUR-PASSWORD”
set smtp_url = “smtp://YOUR-USERNAME@smtp.gmail.com:587/”
set smtp_pass = “YOUR-PASSWORD”
set from = “YOUR-USERNAME@gmail.com”
set realname = “YOUR NAME”
set folder = “imaps://imap.gmail.com:993"
set spoolfile = “+INBOX”
set postponed = “+[Gmail]/Drafts”
set header_cache = ~/.mutt/cache/headers
set message_cachedir = ~/.mutt/cache/bodies
set certificate_file = ~/.mutt/certificates
set move = no
set smtp_authenticators = ‘gssapi:login’
или настроить вашу локальную почтовую систему (проще всего postfix) с вашей почтовой службой.
Если ваша электронная почта от gmail (пожалуйста, обновите вопрос, если это не так)
Ваша конфигурация postfix
излишне сложна. Вполне вероятно, что некоторые из ограничений, установленных в вашей конфигурации, либо сводят на нет друг друга, либо настолько строги, что вам может потребоваться ssh
войти в ваш сервер и вручную отправлять каждую исходящую почту.
Вместо того, чтобы рассматривать опубликованную конфигурацию, в этом ответе будет представлен обзор того, что обычно требуется для настройки достаточно безопасной системы электронной почты для большинства целей. Это не исчерпывающее руководство по настройке каждого компонента. Однако в конце есть список онлайн-ресурсов, которые я считаю весьма полезными и ценными при настройке собственных почтовых серверов.
В ваших комментариях есть несколько дополнительных требований, которые не будут рассмотрены, например, обработка нескольких доменов с помощью одной postfix
установки. Предполагается, что достаточно опытный администратор сможет настроить параметры и добавить необходимые элементы конфигурации с несколькими доменами -.
Современные системы электронной почты эволюционировали и теперь включают множество элементов безопасности и репутации, связанных с доменом. Возможно, самый простой способ начать — посмотреть на схему некоторых наиболее важных новых элементов, содержащихся в заголовке электронного письма.
Существует три основных компонента, которые необходимо настроить для обеспечения подлинности трафика электронной почты, который, как представляется, исходит из домена.
Это:
У каждого из них есть демон, работающий на сервере, а также записи DNS для подключения серверов, чтобы автоматизировать проверку политик домена и проверку криптографических подписей.
Postfix пропускает исходящую почту через демон SPF, который оценивает, соответствует ли отправитель политике исходящей почты. Принимающий почтовый сервер извлекает запись SPF домена из DNS и сверяет запись с заголовком SPF, который сервер-отправитель помещает в электронное письмо.
Реализация SPF, совместимая с постфиксом
Postfix пропускает исходящую электронную почту через демон DKIM, который автоматически подписывает сообщение и включает хэш сообщения в заголовки электронной почты. Принимающий почтовый сервер извлекает открытый ключ DKIM домена из записи DNS и проверяет хэш тела сообщения.
Реализация DKIM, совместимая с постфиксом
Принимающий почтовый сервер извлекает запись политики DMARC из DNS и принимает или отклоняет сообщение или выполняет мягкий отказ сообщения.
Реализация DMARC, совместимая с постфиксом
Считается Передовой практикой безопасности вводить запись политики DMARC «отклонить», даже если ваш домен не отправляет электронные письма.
Пример записей DNS для SPF, DKIM и DMARC
MX 10 mail.domain.tld.
TXT "v=spf1 a:mail.domain.tld -all"
mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0w7N0fWtTndtlR+zOTbHyZOlvFiM73gyjjbHDN1OhhcPCbhRUqTsA7A8uXHGHao6nZ5qejlVtn6NfZwbn7rdhJ0MTjlgTnTsVa8E9rgS6dFo0bEIzeFecDr/4XOF9wpNjhHlnHm4wllkPheFnAWpZQiElZeYDN5Md47W1onwZ3DwcYJNX/3/GtfVZ0PrjisC4P0qeu+Z8jIgZc"
"MLvBm8gj2pX3V6ntJY9QY09fWSVskvC6BQhi6ESOrqbM63f8ZJ4N/9ixPAMiD6k/lyGCokqc6sMuP6EC7z5McEOBbAVEuNy3idKi1sjwQH8WZHrvlSBlzx1wwmpFC1gqWcdTiEGwIDAQAB" ) ; ----- DKIM key mail for domain
_dmarc IN TXT v=DMARC1;p=reject;sp=reject;fo=0:d;adkim=s;aspf=s;rua=mailto:webmaster@domain.tld;ruf=mailto:webmaster@domain.tld;
_domainkey IN TXT o=-;
Вы можете заметить, что DNS-запись с именем mail._domainkey
содержит криптографический открытый ключ.Этот ключ и связанная с ним запись могут быть сгенерированы с помощью программы opendkim-genkey
, установленной вместе с пакетом opendkim
, установленным на вашем сервере.
Генерация ключей довольно проста:
opendkim-genkey -b 2048 -d yourdomain -h sha256 -s mail
Эта команда создаст закрытый ключ, открытый ключ и правильно отформатированную запись DNS. Закрытый ключ необходимо поместить в каталог, указанный в вашей конфигурации opendkim. В то время как открытый ключ и связанная с ним запись DNS помещаются в файл зоны DNS вашего домена. К сожалению, у некоторых провайдеров DNS есть ограничения на длину записей. Итак, убедитесь, что ваш провайдер DNS может обеспечить длину открытого ключа.
Добавление милтеров SPF и DKIM
СПФ
Выдержка из справочной страницы policyd-spf
:
ИНТЕГРАЦИЯ POSTFIX
1. Add the following to /etc/postfix/master.cf:
policyd-spf unix - n n - 0 spawn
user=policyd-spf argv=/usr/bin/policyd-spf
2. Configure the Postfix policy service in /etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
reject_unauth_destination
check_policy_service unix:private/policyd-spf
...
policyd-spf_time_limit = 3600
ДКИМ
Демон opendkim
работает на сокете UNIX, который можно настроить либо как стандартный сокет UNIX, либо на служебном порту inetd
. В моих установках Debian эта конфигурация находится по адресу /etc/default/opendkim
. После запуска opendkim
milter необходимо добавить в конфигурацию postfix
в /etc/postfix/main.cf
.
Вот пример с рабочего сервера:
# DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
ДМАРК
Для небольших или личных почтовых серверов DMARC можно просто ограничить записью DNS. Демон проверки DMARC позволяет отклонять входящую почту в соответствии с политикой домена-отправителя, а также отправлять любые запрошенные отчеты обратно в домен-отправитель. Сообщения считаются «хорошо -воспитанными соседями». Однако я обычно не включаю его для небольших или персональных систем, поскольку накладные расходы на настройку довольно высоки.
Однако DNS-запись DMARC очень важна для поддержания репутации домена. Запись используется всеми современными крупными почтовыми провайдерами для приема или отклонения писем, которые кажутся исходящими из вашего домена. Итак, без записи DMARC,вся входящая почта, которая выглядит так, как будто она была отправлена вашим доменом, засчитывается в счет репутации вашего домена. Таким образом, домен, который вообще не ожидает отправки почты, должен опубликовать запись DMARC «отклонение», чтобы избежать проблем с репутацией из-за поддельных сообщений, рассылаемых спамерами.
В вашей информации о конфигурации указано, что вы используете Dovecot и Postfix.
Dovecot соединяется с Postfix на вашем сервере. Во многих небольших установках подключение к серверу выполняется на том же физическом/логическом оборудовании через сокеты Unix.
Таким образом, подключение Mail User Agent (MUA )обрабатывается промежуточным программным обеспечением, а не фактическим почтовым сервером. В вашем случае это будет Dovecot.
TLS должен быть включен и правильно настроен в Dovecot, чтобы безопасно передавать ваше имя пользователя и пароль от вашего MUA (ex :Evolution, Sylpheed, Mutt и т. д. ).
Для справки см. документацию Dovecot по настройке TLS .
Возможно, но не обязательно, чтобы «сервер -— -сервер» или «промежуточное ПО» для постфиксного соединения были зашифрованы одним и тем же сертификатом TLS. Однако в случае небольшого почтового сервера соединение «промежуточного программного обеспечения» с postfix не обязательно должно быть зашифровано, поскольку оно находится на том же оборудовании.
Получение сертификата LetsEncrypt TLS для вашего почтового сервера и интерфейса MUA (POP3, IMAP и т. д.)
Проект LetsEncrypt проделал очень хорошую работу по упрощению получения сертификатов TLS с проверкой домена. Предполагая, что у вашего домена уже есть сертификат, вы можете добавить к сертификату поддомен -почтового сервера, используя опцию --expand
.
certbot certonly --expand -d domain.tld,www.domain.tld,mail.domain.tld
Затем добавьте путь к сертификату в конфигурацию main.cf
.
smtpd_tls_key_file = /etc/letsencrypt/live/domain.tld/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/domain.tld/fullchain.pem
А также добавьте путь к сертификату в конфигурацию Dovecot в соответствии с документацией Dovecot, указанной выше.
Следует отметить, что SMTP-соединение TLS — это соединение, которое ваш сервер устанавливает с другими серверами. В то время как соединение Dovecot TLS, как правило, является тем, к чему кто-то подключается для отправки электронной почты с клиента веб-почты, отличного от -.
Настройка совместимости SMTP-сервера с сервером TLS
Некоторые почтовые серверы по-прежнему не используют зашифрованные соединения TLS для почты, полученной с других серверов. В таких случаях строгое применение TLS приведет к невозможности доставки почты на эти серверы и домены. Однако многие крупные почтовые провайдеры помечают входящие электронные письма как подозрительные, если соединение не защищено с помощью TLS. Таким образом, для обеспечения наилучшей совместимости включите следующую настройку в свой/etc/postfix/main.cf
smtpd_tls_security_level = may
Также важно отметить, что большинству провайдеров электронной почты не требуется подключение между серверами для использования сертификата, утвержденного центром сертификации, и проверки обычно не выполняются, даже если сертификат одобрен центром сертификации.
Однако сертификат TLS, включенный в Dovecot, должен быть утвержден CA. Самоподписанный сертификат -в Dovecot приведет к предупреждению при использовании большинства MUA, таких как sylpheed
, evolution
или thunderbird
.
По моему опыту, 99% спама можно отклонить с помощью SPF, проверки DKIM и проверки RBL.
Вот часть моих «стандартных» клиентских ограничений.Важно отметить, что ограничения обрабатываются по порядку. По моему опыту порядок, который я привожу ниже, очень хорошо работает :
.smtpd_client_restrictions = permit_mynetworks
permit_sasl_authenticated
check_helo_access hash:/etc/postfix/helo_access
check_client_access hash:/etc/postfix/client_checks
reject_unauth_destination
check_policy_service unix:private/policy-spf
reject_rbl_client cbl.abuseat.org
reject_rbl_client pbl.spamhaus.org
reject_rbl_client sbl.spamhaus.org
reject_rbl_client bl.blocklist.de
reject_unknown_client
Настройка совместимости ограничений клиента SMTPD
Ограничением, которое будет иметь наибольшее количество исключений, будет настройка reject_unknown_client
. Многие онлайн-сервисы неправильно настраивают свой обратный домен и/или используют серию отправляющих доменов, которые могут быть сопоставлены или нет должным образом. Итак, для максимальной совместимости с плохо настроенными почтовыми провайдерами снимите это ограничение.
Однако почти 100 % спама отправляется с почтовых серверов без надлежащих записей обратного домена.
Проверки HELO
Спаммеры часто пытаются подделать HELO, отправив имя вашего домена, IP-адрес или локальный хост. Эти попытки подделки могут быть немедленно отклонены с помощью опции check_helo_access
, как показано выше. Текстовая база данных HELO состоит из доменного имени, IP-адреса или диапазона IP-адресов, за которыми следует действие и сообщение для отправки.
Далее следует довольно простая проверка HELO:
# helo access
# check_helo_access hash:/etc/postfix/helo_access
localhost REJECT Only I am me
127.0.0.1 REJECT Only I am me
example.com REJECT Only I am me
dns.host.ip.addr REJECT Only I am me
«example.com» — это ваш домен, а «dns.host.ip.addr» — это IP-адрес вашего сервера, указанный в DNS.
Этот пример базы данных приводит к чему-то подобному из одного моего фактического журнала сервера:
Oct 30 06:32:49 <domain> postfix/smtpd[22915]: NOQUEUE: reject: RCPT from xxx-161-xxx-132.dynamic-ip.xxxx.net[xxx.161.xxx.132]: 554 5.7.1 <xxx.xxx.xxx.xxx>: Helo command rejected: Only I am me; from=<dlh@xxx.xxx.cq.cnt> to=<gogo@xxxx.com.tw> proto=SMTP helo=<xxx.xxx.xxx.xxx>
Потенциальный спамер/спуфер получает сообщение «Только я — это я». Неважно, что это за сообщение, но, по крайней мере, спамер/спуфер знает, что вы знаете.
Обязательно сгенерируйте базу данных postfix
с помощью:
postmap helo_access
Добавление исключений к ограничениям через клиент _проверка белого списка
Проверка отдельных клиентов происходит примерно так:
ip.addr.hack.attmpt REJECT
misconfig.server.but.good OK
Обязательно сгенерируйте базу данных postfix
с помощью:
postmap client_checks
И на этом все. Я получаю около 3 писем со спамом в месяц, сотни спамов отклонены.
Использовать другое ограничение для интерфейса отправки (MSA -агент отправки почты )на порт 587, например (выдержка изmaster.cf
):
submission inet n - - - - smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_restrictions=reject_authenticated_sender_login_mismatch
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
Он принудительно запускает STARTTLS и разрешает отправку только после аутентификации, это самый простой способ. Вы также можете использовать VPN или что-то подобное, как предложено в комментариях, и внести в белый список свои IP-адреса/диапазоны с помощью этого метода.
Рекомендуется использовать разные порты для MSA (порт 587 )и MTA (Mail Transport Agent, порты 25, 465 ), поскольку для них обоих потребуются разные настройки.
Это минимальный пример, расширьте его под свои нужды.