2016-09-15 13 views
0

Я пытаюсь настроить некоторые контейнеры для управления своими личными письмами на моем VPS.Докеры и непоследовательные IP-адреса от хоста

Я установил шифрование TLS для постфиксного сервера. При настройке SPF для обнаружения поддельных электронных писем, я обнаружил, что зарегистрированный IP не то же самое в зависимости, если используется шифрование:

При получении электронной почты от некоторых отправителей:

Received: from zproxy.mydomain.com (zproxy110.mydomain.com [137.**.**.**]) 
    by localhost (Postfix) with ESMTP id 5250459F 

при получении почты от моего GMail счет (TLS-включен):

Received: from mail-lf0-x241.google.com (dockerhost [172.18.0.1]) 
    (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) 
    (No client certificate requested) 
    by localhost (Postfix) with ESMTPS id 2EDEF59F 

При получении электронной почты из другой сети:

Received: from cabale.usenet-fr.net (dockerhost [172.18.0.1]) 
    by localhost (Postfix) with ESMTP id 834F8520 

Похоже, что IP-адрес IP-адреса ведущего узла Docker на ... случайный базис, используя IP 172.18.0.1. Кроме того, что это проблема сама по себе, она также влияет на SPF, поскольку электронные письма от Google помечены как SoftFail, поскольку IP не разрешен.

Я не смог понять, почему некоторые серверы (всегда) сообщают о IP-адрес dockerhost, а некоторые нет. Это не связано с шифрованием TLS, поскольку я, во-первых, в первую очередь.

Вот мой master.cnf файл:

# 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_tls_cert_file = /etc/ssl/certs/postfix-cert.pem 
smtpd_tls_key_file = /etc/ssl/private/postfix-cert.key 
smtpd_use_tls=yes 
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. 

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination check_policy_service unix:private/policy-spf 
myhostname = localhost 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
mydestination = /etc/mailname, 11687faae091, localhost.localdomain, localhost 
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = all 
inet_protocols = all 
virtual_gid_maps = static:5000 
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf 
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf 
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf 
virtual_transport = dovecot 
dovecot_destination_recipient_limit = 1 
smtpd_tls_loglevel = 1 
smtpd_tls_received_header = yes 
smtpd_tls_security_level = may 
smtpd_tls_protocols = !SSLv2,!SSLv3,TLSv1,TLSv1.1,TLSv1.2 
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,TLSv1,TLSv1.1,TLSv1.2 
smtpd_tls_mandatory_exclude_ciphers = aNULL,MD5,RC4 
smtpd_tls_mandatory_ciphers = high 
smtp_tls_security_level = may 
smtp_tls_loglevel = 1 
smtp_tls_mandatory_protocols = !SSLv2,!SSLv3,TLSv1,TLSv1.1,TLSv1.2 
smtp_tls_protocols = !SSLv2,!SSLv3,TLSv1,TLSv1.1,TLSv1.2 
smtp_tls_mandatory_exclude_ciphers = aNULL,MD5,RC4 
policy-spf_time_limit = 3600s 

И мой main.cnf файл:

smtp  inet n  -  n  -  -  smtpd 
pickup  unix n  -  n  60  1  pickup 
cleanup unix n  -  n  -  0  cleanup 
qmgr  unix n  -  n  300  1  qmgr 
tlsmgr  unix -  -  n  1000? 1  tlsmgr 
rewrite unix -  -  n  -  -  trivial-rewrite 
bounce  unix -  -  n  -  0  bounce 
defer  unix -  -  n  -  0  bounce 
trace  unix -  -  n  -  0  bounce 
verify  unix -  -  n  -  1  verify 
flush  unix n  -  n  1000? 0  flush 
proxymap unix -  -  n  -  -  proxymap 
proxywrite unix -  -  n  -  1  proxymap 
smtp  unix -  -  n  -  -  smtp 
relay  unix -  -  n  -  -  smtp 
showq  unix n  -  n  -  -  showq 
error  unix -  -  n  -  -  error 
retry  unix -  -  n  -  -  error 
discard unix -  -  n  -  -  discard 
local  unix -  n  n  -  -  local 
virtual unix -  n  n  -  -  virtual 
lmtp  unix -  -  n  -  -  lmtp 
anvil  unix -  -  n  -  1  anvil 
scache  unix -  -  n  -  1  scache 
maildrop unix -  n  n  -  -  pipe flags=DRhu 
    user=vmail argv=/usr/bin/maildrop -d ${recipient} 
uucp  unix -  n  n  -  -  pipe flags=Fqhu 
    user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) 
ifmail  unix -  n  n  -  -  pipe flags=F user=ftn 
    argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) 
bsmtp  unix -  n  n  -  -  pipe flags=Fq. 
    user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient 
scalemail-backend unix - n  n  -  2  pipe flags=R 
    user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} 
    ${user} ${extension} 

mailman unix -  n  n  -  -  pipe flags=FR 
    user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} 
    ${user} 
dovecot unix -  n  n  -  -  pipe 
    flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -a ${recipient} 
submission inet n  -  -  -  -  smtpd 
    -o smtpd_tls_security_level=encrypt 
    -o smtpd_sasl_auth_enable=yes 
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
policy-spf unix -  n  n  -  -  spawn 
    user=nobody argv=/usr/bin/policyd-spf 

Где это поведение пришли и как я могу исправить это так, что сообщенная IP является фактическим один ?

EDIT: Хорошо, я просто проверял от другого провайдера, и это выглядит как шифрование может не иметь ничего общего с ним:

Received: from o1.30e.fshared.sendgrid.net (o1.30e.fshared.sendgrid.net [167.89.55.41]) 
    (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) 

ответ

1

Это известная ошибка в текущей (2016-10-10) Версии докеров: Прокси-сервер userland используется для привязки портов контейнера к хост-порту, но имеет несоответствия, которые вы испытали. У меня такая же проблема.

Ссылки:

  • https://github.com/docker/docker/issues/15086 - базовый вопрос, касающийся проблемы, предложил лучшее решение отключить пользовательские программы прокси и использовать IPTables вместо того, чтобы маршрутизировать порт (ы)
  • https://github.com/docker/docker/issues/14856 - Предпринимаются усилия до отключить прокси-сервер userland по умолчанию, но в настоящее время заблокированы, см. ниже
  • с использованием «--userland-proxy = false» может вызвать серьезные проблемы с сетью хостов, поэтому в настоящее время не рекомендуется, см. docker issue # 5618
+0

Спасибо за ответ! Я не смог определить причину ошибки, теперь я знаю, что происходит :) –