# socks5 proxy on smtp transport, TCP Fast Open
#
# NOTE: ensure that TFO is fully enabled in the kernel.
# For linux: sysctl net.ipv4.tcp_fastopen=3
# 
munge loopback
#
#
# Wipe any stored TFO cookie, to start from known state.
# Disable TFO blackhole-detection as we seem to be running afoul of that
sudo perl
system ("ip tcp_metrics delete 127.0.0.1");
system ("[ -e /proc/sys/net/ipv4/tcp_fastopen_blackhole_timeout_sec ] && echo 0 > /proc/sys/net/ipv4/tcp_fastopen_blackhole_timeout_sec");
****
#
# TFO both clients and server, no cookie yet
server -tfo PORT_D
<<\x05\x01\x00
>>\x05\x00
<<\x05\x01\x00\x01\x7f\x00\x00\x01\x04\xc8
>>\x05\x00\x00\x01\x7f\x00\x00\x01\xbe\xef
220 Connected OK
EHLO
250-server id
250
MAIL FROM
250
RCPT TO
250
DATA
354 go ahead
.
250 accepted OK
QUIT
250 bye
****
#
#
exim -odi -bs -DOPT=
ehlo test.ex
mail from:<>
rcpt to:<user_tfo@test.ex>
data
Date: Fri, 17 Dec 2004 14:35:01 +0100
Subject: message should be sent

connection trying TFO via proxy; no cookie yet
.
quit
****
#
#
#
# TFO client, not server
server PORT_D
<<\x05\x01\x00
>>\x05\x00
<<\x05\x01\x00\x01\x7f\x00\x00\x01\x04\xc8
>>\x05\x00\x00\x01\x7f\x00\x00\x01\xbe\xef
220 Connected OK
EHLO
250-server id
250
MAIL FROM
250
RCPT TO
250
DATA
354 do me
.
250 accepted OK
QUIT
250 bye
****
#
#
exim -odi -bs -DOPT=
ehlo test.ex
mail from:<>
rcpt to:<user_tfo@test.ex>
data
Date: Fri, 17 Dec 2004 14:35:01 +0100
Subject: message should be sent

connection trying TFO
via null-auth proxy
.
quit
****
#
#
#
# TFO client and server
server -tfo PORT_D
<<\x05\x01\x00
>>\x05\x00
<<\x05\x01\x00\x01\x7f\x00\x00\x01\x04\xc8
>>\x05\x00\x00\x01\x7f\x00\x00\x01\xbe\xef
220 Connected OK
EHLO
250-server id
250
MAIL FROM
250
RCPT TO
250
DATA
354 do me mate
.
250 accepted OK
QUIT
250 bye
****
#
#
exim -odi -bs -DOPT=
ehlo test.ex
mail from:<>
rcpt to:<user_tfo@test.ex>
data
Date: Fri, 17 Dec 2004 14:35:01 +0100
Subject: message should be sent

connection using TFO
via null-auth proxy
.
quit
****
#
millisleep 500
#
sudo perl
system ("[ -e /proc/sys/net/ipv4/tcp_fastopen_blackhole_timeout_sec ] && echo 3600 > /proc/sys/net/ipv4/tcp_fastopen_blackhole_timeout_sec");
****
#
# Ends
