When using `imap-shell-program' (with a nnimap-stream of 'shell), the process is created `as is' with start-process. The docstring of start-process says : If you want to separate standard output from standard error, invoke the command through a shell and redirect one of them using the shell syntax. Well, this is fun, because my distant imapd says the following : $ imapd * PREAUTH Ready. INFO: LOGIN, user=cadilhac, ip=[127.0.0.1], protocol=IMAP Oh, heck. Gnus is searching for PREAUTH on the INFO line, doesn't found it, and just wait until the end of time to see what's happening next[1]. Well, I'm not comfortable with the use of `2> /dev/null' on a package meant to work on Windows, so I propose this more radical change :