Welcome to the wonderful world of system administration.
Indeed fetchmail only fetches the mail from your ISP or email host , we have both. It presents the mail to port 25 where qmail "listens" for incoming mail.
fetchmail can "choke" if there are problems in the incoming message. While I haven't had that problem with our e-smith server - yet - I have had the problem and solved it the same way you did.
fetchmail and the outgoing function of qmail are probably run from a script. It appears that qmail is configured to send the mail after fetchmail finishes. This has the advantage of immediately sending automated responses. However, if the script fails before the mail is sent it just sits in the mail queue.
Our system, not e-smith, sends the mail before and after it runs fetchmail.
Hope this helps