RE: postfix 2.6.6 / always_add_missing_headers behavior question

2018-03-22 Thread Aaron Bennett

-Original Message-


>2.6.6, though many years past EOL, is indeed later than 2.6, so WHEN [the 
>listed headers are] NOT >PRESENT they are added ONLY WHEN CLIENTS MATCH THE 
>local_header_rewrite_clients >PARAMETER SETTING.  That's the default setting 
>of "no" for always_add_missing_headers.
>
>The Postfix 2.5 and prior behavior was to ALWAYS add these headers if missing, 
>regardless of the >client address.

Thank you.


Re: SMTP session caching

2018-03-22 Thread Wietse Venema
Viktor Dukhovni:
> 
> 
> > On Mar 21, 2018, at 9:46 PM, Wietse Venema  wrote:
> > 
> > Just like the SMTP conection cache service, the tlsproxy service
> > must not try to do clever things. It receives TLS requirements,
> > does a TLS handshake, and returns TLS session properties that can
> > later be used to create a connection cache index. If it needs to
> > impersonate a delivery agent, then it gets that nanme from the
> > Postfix SMTP client.
> 
> I'd like to avoid having to fully instantiate the SSL_CTX for each
> and every connection, SSL_CTX initialization can be expensive.
> Thus, the agent name requirement, and re-use of SSL_CTX built for
> previous clients with the same name.

Currently, the Postfix SMTP client does a bunch of TLS initialization,
once per TLS session.

The tlsproxy service will do exactly the same TLS initialization
once per TLS session. In addition we shuttle some serialized SMTP
client state between SMTP client, tlsproxy process, and scache
daemon. Conceptualy, that serialized state is just another RPC
message.

Cached TLS session:
scache daemon -> tlsproxy -> remote SMTP server

Reused TLS session, or new TLS session:
smtp client -> tlsproxy -> remote SMTP server

Initial SMTP handshake:
smtp client -> remote SMTP server

> All in all this is a non-trivial bit of work...

Meh. Where I work now, we solve harder problems.

Wietse


Re: SMTP session caching

2018-03-22 Thread Viktor Dukhovni


> On Mar 22, 2018, at 10:54 AM, Wietse Venema  wrote:
> 
> Currently, the Postfix SMTP client does a bunch of TLS initialization,
> once per TLS session.

The expensive stuff for SSL_CTX happens only once in tls_client_init().
You're only looking at tls_client_start(), which uses a previously
initialized context.

-- 
Viktor.



Re: SMTP session caching

2018-03-22 Thread Wietse Venema
Viktor Dukhovni:
> 
> 
> > On Mar 22, 2018, at 10:54 AM, Wietse Venema  wrote:
> > 
> > Currently, the Postfix SMTP client does a bunch of TLS initialization,
> > once per TLS session.
> 
> The expensive stuff for SSL_CTX happens only once in tls_client_init().
> You're only looking at tls_client_start(), which uses a previously
> initialized context.

Well, each Postfix SMTP client creates SSL_CTX once, then reuses
it across multiple TLS sessions. I suppose that tlsproxy can share
this object among all sessions that tlsproxy creates for SMTP clients
with similar parameters. This is the stuff that gets serialized and
passed around between SMTP client, tlsproxy, and that appears in
scache lookup keys).

This may be non-trivial but it's not rocket science.

Wietse


Re: SMTP session caching

2018-03-22 Thread Viktor Dukhovni


> On Mar 22, 2018, at 1:22 PM, Wietse Venema  wrote:
> 
> Well, each Postfix SMTP client creates SSL_CTX once, then reuses
> it across multiple TLS sessions. I suppose that tlsproxy can share
> this object among all sessions that tlsproxy creates for SMTP clients
> with similar parameters. This is the stuff that gets serialized and
> passed around between SMTP client, tlsproxy, and that appears in
> scache lookup keys).

Yes, that's what I had in mind.

> This may be non-trivial but it's not rocket science.

Yes, just a bunch of attention to detail.

-- 
Viktor.



why is smtpd_recipient_restrictions ignored..?

2018-03-22 Thread mj

Hi all,

This postfix 2.9.6 from wheezy. I have added to main.cf:


smtpd_recipient_restrictions = check_recipient_access 
hash:/etc/postfix/blacklisted_domains, permit_mynetworks, 
reject_unauth_destination, permit


and /etc/postfix/blacklisted_domains contains just one line:


mail.ru REJECT


I postmapped the file and restarted postfix.

Alas... postfix is still happily forwarding emails to 1...@mail.ru to my 
smarthost.


How can I make sure that this particular postfix instance will DISALLOW 
sending ANY email to @mail.ru?


What am I missing?

Thanks in advance!

MJ

Here is my complete main.cf:


# 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 (Debian/GNU)
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_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.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

# to prevent russian spam
smtpd_recipient_restrictions = check_recipient_access 
hash:/etc/postfix/blacklisted_domains, permit_mynetworks, 
reject_unauth_destination, permit

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = www.site1.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = www.site1.com, site2.com, localhost.site2.com, localhost, 
site3.com
relayhost = outgoing.smarthost.com
mynetworks = 127.0.0.0/8 [:::127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
sender_canonical_maps = hash:/etc/postfix/sender_canonical




Re: why is smtpd_recipient_restrictions ignored..?

2018-03-22 Thread Viktor Dukhovni


> On Mar 22, 2018, at 7:35 PM, mj  wrote:
> 
> This postfix 2.9.6 from wheezy. I have added to main.cf:
> 
>> smtpd_recipient_restrictions = check_recipient_access 
>> hash:/etc/postfix/blacklisted_domains, permit_mynetworks, 
>> reject_unauth_destination, permit
> 
> and /etc/postfix/blacklisted_domains contains just one line:
> 
>> mail.ru  REJECT
> 
> I postmapped the file and restarted postfix.
> 
> Alas... postfix is still happily forwarding emails to 1...@mail.ru to my 
> smarthost.

Almost certainly bounces, which did not come in via SMTP, they are originated
locally, when inbound mail from mail.ru is undeliverable, and sent outbound
via the smarthost.

> How can I make sure that this particular postfix instance will DISALLOW 
> sending ANY email to @mail.ru?

Seems a rather harsh policy, but if you must:

transport:
mail.ru  error:5.1.2 Destination domain blacklisted

-- 
Viktor.



Re: why is smtpd_recipient_restrictions ignored..?

2018-03-22 Thread mj

Hi Viktor,

On 03/23/2018 12:42 AM, Viktor Dukhovni wrote:

Almost certainly bounces, which did not come in via SMTP, they are originated
locally, when inbound mail from mail.ru is undeliverable, and sent outbound
via the smarthost.
Yes, they are originated locally, yes, using a webform that is currently 
being abused.



How can I make sure that this particular postfix instance will DISALLOW sending 
ANY email to @mail.ru?


Seems a rather harsh policy, but if you must:

transport:
mail.ru  error:5.1.2 Destination domain blacklisted


It's very harsh, but we'll do it just for the time being, until we have 
fixed the webform.


Your solution works super, thanks a lot!

Is there perhaps also another error code we can use, that blackholes the 
email, instead of politely bouncing it with a "Diagnostic-Code: 
X-Postfix; Destination domain blacklisted"?


MJ


Re: why is smtpd_recipient_restrictions ignored..?

2018-03-22 Thread Viktor Dukhovni


> On Mar 22, 2018, at 7:58 PM, mj  wrote:
> 
> On 03/23/2018 12:42 AM, Viktor Dukhovni wrote:
>> Almost certainly bounces, which did not come in via SMTP, they are originated
>> locally, when inbound mail from mail.ru is undeliverable, and sent outbound
>> via the smarthost.
> Yes, they are originated locally, yes, using a webform that is currently 
> being abused.
> 
>>> How can I make sure that this particular postfix instance will DISALLOW 
>>> sending ANY email to @mail.ru?
>> Seems a rather harsh policy, but if you must:
>>  transport:
>>  mail.ru  error:5.1.2 Destination domain blacklisted
> 
> It's very harsh, but we'll do it just for the time being, until we have fixed 
> the webform.

If you have a compromised webform, DISABLE it, don't try to put on bandaids, or
assume that all the abuse will go to just one domain.

> Your solution works super, thanks a lot!
> 
> Is there perhaps also another error code we can use, that blackholes the 
> email, instead of politely bouncing it with a "Diagnostic-Code: X-Postfix; 
> Destination domain blacklisted"?

Yes, but the right answer is turn off the webform until you can replace it
with something that is not open to abuse.

-- 
Viktor.



Re: why is smtpd_recipient_restrictions ignored..?

2018-03-22 Thread mj



On 03/23/2018 12:58 AM, mj wrote:
Is there perhaps also another error code we can use, that blackholes the 
email, instead of politely bouncing it with a "Diagnostic-Code: 
X-Postfix; Destination domain blacklisted"?


I just found the "discard" option.

Thanks you again, Viktor!

MJ


Re: why is smtpd_recipient_restrictions ignored..?

2018-03-22 Thread mj



On 03/23/2018 01:06 AM, Viktor Dukhovni wrote:

Yes, but the right answer is turn off the webform until you can replace it
with something that is not open to abuse.


We will install a captcha tomorrow. (it's after midnight now)

It's also not *that* harmful: they s u b s c r i b e to a wordpress 
blog, using russian email addresses. Actually: We don't understand 
what's in it for them...


The system then sends a c o n f i r m a t i o n email, that 99% of the 
time is not clicked. And this all happens to four different .ru domains.


Requiring a captcha to s u b s c r i b e will probably get rid of this.

MJ