#3570: use of socat with "tunnel" hang forever
--------------------------+-------------------------------------------------
Reporter: pierrem | Owner: mutt-dev
Type: defect | Status: infoneeded_new
Priority: major | Milestone:
Component: mutt | Version: 1.5.21
Keywords: tunnel socat |
--------------------------+-------------------------------------------------
Changes (by me):
* status: new => infoneeded_new
Old description:
> Using debian wheezy package mutt 1.5.21-5, and getting the same result
> with /usr/bin/mutt and /usr/bin/mutt-org
>
> using set tunnel='socat STDIO
> SOCKS4A:tor.example.com:imap.gmail.com:imaps,socksport=9100'
> gives the following output when running mutt -d 5:
>
> Connecting with "socat STDIO
> SOCKS4A:tor.example.com:imap.gmail.com:imaps,socksport=9100"...
>
> Connected to imap.gmail.com:993 on fd=42
>
> imap_cmd_step: grew buffer to 512 bytes
>
> and wait forever until I kill the socat process.
> A direct connection to the imap server works fine.
>
> For the same kind of problematic, fetchmail uses the "plugin" parameter
> with the same "socat ..." argument and succeeds in establishing a
> connection through the tor node and fetching mails from the IMAP server.
> The difference I spot is that fetchmail uses one socketpair() where mutt
> uses two pipe().
>
> When I modify the tunnel_socket_read() and tunnel_socket_write()
> functions in mutt_tunnel.c with mutt_message() to print in the debug log
> what is read from or written to the tunnel, nothing appears. It seems
> that nothing is sent through the tunnel.
>
> That would be nice if someone with a good understanding of this code
> could fix this.
>
> thanks
New description:
Using debian wheezy package mutt 1.5.21-5, and getting the same result
with /usr/bin/mutt and /usr/bin/mutt-org
using set tunnel='socat STDIO
SOCKS4A:tor.example.com:imap.gmail.com:imaps,socksport=9100'
gives the following output when running mutt -d 5:
Connecting with "socat STDIO
SOCKS4A:tor.example.com:imap.gmail.com:imaps,socksport=9100"...
Connected to imap.gmail.com:993 on fd=42
imap_cmd_step: grew buffer to 512 bytes
and wait forever until I kill the socat process.
A direct connection to the imap server works fine.
For the same kind of problematic, fetchmail uses the "plugin" parameter
with the same "socat ..." argument and succeeds in establishing a
connection through the tor node and fetching mails from the IMAP server.
The difference I spot is that fetchmail uses one socketpair() where mutt
uses two pipe().
When I modify the tunnel_socket_read() and tunnel_socket_write() functions
in mutt_tunnel.c with mutt_message() to print in the debug log what is
read from or written to the tunnel, nothing appears. It seems that nothing
is sent through the tunnel.
That would be nice if someone with a good understanding of this code could
fix this.
thanks
--
Comment:
If I'm understanding the socat man page correctly, I think the problem is
that mutt can't do SSL over the tunnel. I'm not sure if you can make
socat do the SSL negotiation itself. Mutt expects to speak the IMAP
protocol directly over the tunnel socket.
--
Ticket URL: <http://dev.mutt.org/trac/ticket/3570#comment:1>
Mutt <http://www.mutt.org/>
The Mutt mail user agent