Сегодня утром, чтобы исправить проблему с несоответствием имени в сертификате безопасности, я выполнил рекомендации из How to fix mail server SSL?, но теперь, при попытке отправить письмо с клиента (в данном случае клиентом является Windows Mail), я получаю следующую ошибку.
The rejected e-mail address was. '[email protected]'. Тема 'This is a test. ', Account: 'mail.domain.com', Сервер: 'mail.domain.com', Протокол: SMTP, Ответ сервера: '554 5.7.1 [email protected]: Релейный доступ отказано', Порт: 25, Безопасность (SSL): Нет, Server Error: 554, Номер ошибки: 0x800CCC79
Edit: Я все еще могу получать сообщения электронной почты с этой учетной записи, и я отправляю сообщения на другие учетные записи в том же домене. Я просто не могу отправлять письма получателям за пределами нашего домена.
Я попробовал отключить TLS, но безрезультатно, я по-прежнему получаю ту же ошибку.
Когда я проверяю файл mail.log
, я вижу следующее.
Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79
Файл main.cf
выглядит следующим образом:
#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#
#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix
#
# Some common configuration parameters;
#
inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = host
myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain
smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop
#
# Receiving messages parameters;
#
mydestination = localhost, company
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf
#
# Delivering local messages parameters;
#
mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"
biff = no
alias_database = hash:/etc/aliases
local_recipient_maps =
#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf
#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key
smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes
smtpd_sender_restrictions =
permit_sasl_authenticated
permit_mynetworks
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
В качестве примечания: мой работодатель хочет иметь возможность отправлять электронную почту с клиентов (Thunderbird и Outlook) как из нашей локальной сети, так и за ее пределами.
TLS только обеспечивает шифрование smtp-сессии и не влияет непосредственно на то, будет ли Postfix разрешено передавать сообщение.
Отказ в передаче сообщения происходит из-за того, что не соблюдены правила smtpd_recipient_restrictions. Одно из этих условий должно быть выполнено, чтобы сообщение могло пройти:
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
Поясним эти правила:
permit_sasl_authenticated
разрешает аутентификацию отправителей через SASL. Это необходимо для аутентификации пользователей за пределами вашей сети, которые обычно блокируются.
check_recipient_access
Это заставит postfix искать в файле /etc/postfix/filtered_domains правила, основанные на адресе получателя. (Судя по имени файла, вероятно, он просто блокирует определенные домены... Проверьте, не указан ли там gmail.com?)
permit_mynetworks
Это разрешит хосты по IP-адресам, которые соответствуют диапазонам IP-адресов, указанных в $mynetworks. В опубликованном вами файле main.cf параметр $mynetworks был установлен на 127.0.0.1, поэтому он будет ретранслировать только письма, сгенерированные самим сервером.
Исходя из этой конфигурации, ваш почтовый клиент должен использовать SMTP-аутентификацию, прежде чем ему будет разрешено передавать сообщения. Я не уверен, какую базу данных использует SASL. Это указано в файле /usr/lib/sasl2/smtpd.conf Предположительно, он также использует ту же базу данных, что и ваши виртуальные почтовые ящики, поэтому вы должны иметь возможность включить SMTP-аутентификацию в почтовом клиенте и все будет готово.
smtpd_use_tls = no
Вы отключили TLS, теперь необходимо авторизовать свою локальную сеть, добавив ее в mynetworks
. Например,
mynetworks = 192.168.1.0/24 127.0.0.0/8
Это позволит разрешить отправку только из вашей локальной сети. Для отправки электронной почты извне локальной сети необходимо обеспечить работу TLS-аутентификации.
Я думаю, что вам не хватает вашего домена.com в mydestination, потому что по умолчанию relay_domains=$mydestination
, так что вы можете добавить в свою конфигурацию эту строку:
mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain
или:
relay_domains = $mydomain
Не забывайте перезапускать postfix-сервер (service postfix restart
) при каждом редактировании файла postfix conf.
У меня была такая же проблема в Outlook (с голубятней и постфикс backend) и я провел два дня искал решение и настройки мои конфигурационные файлы. Все, что мне нужно было сделать, это проверить на "сервер требует проверки подлинности" в разделе исходящие в настройках почты в Outlook и мои сообщения теперь отправляются в Gmail. Ознакомиться с подробной инструкцией о том, как найти эти настройки http://support.bluetie.com/node/440.
Эта проблема была давало мне покоя на некоторое время. Я пытался подключиться от server1.domain.com для server2.domain.com.
Здесь's, как я это исправил -
#/etc/postfix/main.cf
mydomain = server1.domain.com
myhostname = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = localhost.localdomain localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
Вы также должны убедиться, что вы измените файл /etc/hosts и в /etc/имя хоста правильно и убедитесь, что вы выполните следующую после сети перемен -
sudo service networking restart
и после постфикс изменения конфигурации
sudo service postfix reload