To reproduce, create a free yahoo mail account. Using those credentials try this ruby code: require 'net/imap' Net::IMAP.debug = true conn = Net::IMAP.new('imap.mail.yahoo.com', 143, false) conn.instance_eval { send_command('ID ("GUID" "1")') } conn.authenticate('LOGIN', , ) conn.select("INBOX") uids = conn.uid_search(['ALL']) conn.logout conn.disconnect You should have at least one welcome email and the response from the conn.uid_search(['ALL']) will return "* SEARCH 1 \r\n" The trailing space before the CRLF seems unanticipated by search_response and causes the 'unexpected token' downstream in number. Here is my patch: def search_response # line 2706 imap.rb token = match(T_ATOM) name = token.value.upcase token = lookahead if token.symbol == T_SPACE shift_token data = [] while true token = lookahead #begin patch - yahoo IMAP was returning pattern " SEARCH 1 2 \r\n so was doing push on CRLF =begin before patch case token.symbol when T_CRLF break when T_SPACE shift_token end data.push(number) =end case token.symbol when T_CRLF break when T_SPACE shift_token else data.push(number) end #end patch end else data = [] end return UntaggedResponse.new(name, data, @str) end I confirmed this code is unchanged in p180 so didn't test it there. I hope this helps.