Я настраиваю новый почтовый сервер для своей компании с Ubuntu Server 11.04
и postfix / dovecot. Я новичок в этом, поэтому у меня есть некоторые проблемы. Я получаю, что он работает только для получения писем с любого адреса за пределами локальной сети, и я могу отправлять только для того же домена. Если я попытаюсь отправить с ним новое сообщение на внешний адрес (например, Gmail), у меня будет Relay denied
.
Итак, у моего сервера было 2 сетевых интерфейса, 1 для моей локальной сети (192.168.1.xxx) и один - общедоступный статический IP-адрес. Мой домен для тестирования pourpose: enti.centropaghe.it
и я создаю MX
запись в mail.enti.centropaghe.it
Моя цель - получить полнофункциональный сервер imap / smtp / pop3 с аутентификацией на обеих сторонах, и он может отправлять электронную почту на все адреса :)
Я публикую часть своего файла конфигурации, чтобы вы могли его выкопать:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_use_tls=yes
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
mydomain = enti.centropaghe.it
myhostname = mail.enti.centropaghe.it
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost
relayhost = $mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
default_transport = error
relay_transport = error
mail_spool_directory = /var/mail/
search enti.centropaghe.it
nameserver 192.168.1.221 #is my dns server on my lan
127.0.0.1 localhost.localdomain localhost
192.168.1.148 mail.enti.centropaghe.it darwin
; <<>> DiG 9.7.3 <<>> enti.centropaghe.it mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65356
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; QUESTION SECTION:
;enti.centropaghe.it. IN MX
;; ANSWER SECTION:
enti.centropaghe.it. 8381 IN MX 10 mail.enti.centropaghe.it.
;; AUTHORITY SECTION:
centropaghe.it. 71334 IN NS dns2.telemar.it.
centropaghe.it. 71334 IN NS dns.telemar.it.
;; ADDITIONAL SECTION:
mail.enti.centropaghe.it. 7333 IN A 213.178.198.62
dns.telemar.it. 28595 IN A 213.178.196.1
dns2.telemar.it. 20154 IN A 213.178.195.254
;; Query time: 1 msec
;; SERVER: 192.168.1.221#53(192.168.1.221)
;; WHEN: Wed Feb 29 15:24:47 2012
;; MSG SIZE rcvd: 151
; <<>> DiG 9.7.3 <<>> enti.centropaghe.it any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58752
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; QUESTION SECTION:
;enti.centropaghe.it. IN ANY
;; ANSWER SECTION:
enti.centropaghe.it. 8342 IN MX 10 mail.enti.centropaghe.it.
enti.centropaghe.it. 7266 IN A 213.178.198.58
;; AUTHORITY SECTION:
centropaghe.it. 71295 IN NS dns2.telemar.it.
centropaghe.it. 71295 IN NS dns.telemar.it.
;; ADDITIONAL SECTION:
mail.enti.centropaghe.it. 7294 IN A 213.178.198.62
dns.telemar.it. 28556 IN A 213.178.196.1
dns2.telemar.it. 20115 IN A 213.178.195.254
;; Query time: 0 msec
;; SERVER: 192.168.1.221#53(192.168.1.221)
;; WHEN: Wed Feb 29 15:25:27 2012
;; MSG SIZE rcvd: 167
Feb 29 17:11:10 darwin postfix/smtpd[8207]: warning: 213.178.xxx.xxx: hostname ip.213.178.xxx.xxx.telemar.it verification failed: Name or service not known
Feb 29 17:11:10 darwin postfix/smtpd[8207]: connect from unknown[213.178.xxx.xxx]
Feb 29 17:11:10 darwin postfix/smtpd[8207]: NOQUEUE: reject: RCPT from unknown[213.178.xxx.xxx]: 554 5.7.1 <username@gmail.com>: Relay access denied; from=<otherusername@enti.centropaghe.it> to=<username@gmail.com> proto=ESMTP helo=<[192.168.1.138]>
Feb 29 17:11:13 darwin postfix/smtpd[8207]: disconnect from unknown[213.178.xxx.xxx]
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mail_spool_directory = /var/mail/
mailbox_size_limit = 0
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost
mydomain = enti.centropaghe.it
myhostname = mail.enti.centropaghe.it
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
myorigin = $mydomain
readme_directory = no
recipient_delimiter = +
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
Надеюсь, это все. Если вам нужно что-то еще, дайте мне знать.
С последними изменениями, теперь, используя внутренний IP-адрес smtp, я могу отправлять электронную почту на внешний адрес. Но не работает с mail.enti.centropaghe.it
Из вашего main.cf:
default_transport (по умолчанию: smtp) Ты использовал: default_transport = ошибка
Транспорт доставки почты по умолчанию и место назначения следующего перехода для мест назначения, которые не соответствуют $ mydestination, $ inet_interfaces, $ proxy_interfaces, $ virtual_alias_domains, $ virtual_mailbox_domains или $ relay_domains
Ну вот и все. Удалите эту строку. Вы хотите использовать SMTP для отправки электронной почты, не относящейся к вашему домену. Прямо сейчас вы заставили себя выполнять только локальную доставку (любая почта, которая должна идти куда-либо за пределы этой машины, не будет принята). Вот почему вы можете получать почту, но ничего, что не принято этим хостом, не пересылается.
relayhost (по умолчанию: пусто) Ты использовал: relayhost = $ mydomain
Адресат следующего перехода нелокальной почты; переопределяет нелокальные домены в адресах получателей. Эта информация отменяется функцией relay_transport ...
Это определенно влияет на вещи. Если у вас нет другого SMTP-сервера, который прослушивает enti.centropaghe.it, и вы хотите, чтобы вся почта проходила через него, ваша почта снова никуда не денется. Вероятно, вам следует удалить эту строку.
relay_transport (по умолчанию: реле) Ты использовал: relay_transport = ошибка
Транспорт для доставки почты по умолчанию и место назначения следующего перехода для удаленной доставки в домены, перечисленные в $ relay_domains. В порядке убывания приоритета назначение следующего перехода берется из $ relay_transport, $ sender_dependent_relayhost_maps, $ relayhost или из домена получателя
Я не вижу $ relay_domains, поэтому предлагаю удалить это.
Ах, лошадь другого цвета. В этой строке ниже указано, кому разрешено ретранслировать. Ваше сообщение об ошибке исходит от хоста, начинающегося с 213.178
. Поскольку для него нет записи и у вас есть другая форма аутентификации для ретрансляции, это отклонено. Возможно, вы хотите добавить запись, охватывающую назначенный диапазон сети?
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
Сообщите мне, как это работает для вас.