To add to Joe’s response to your original question, removing the domain name from usernames is not the only way to solve this problem. I think that having domain names attached to the usernames is very sensible in this type of environment, since it helps track where your users belong and manage them properly. It is also the most consistent method, since otherwise you will have some users with domain names, and some without. I’ve done it that way on a previous server, and it got quite ugly after a while. It is[B>much</B> easier to manage a consistent environment than one with a bunch of exceptions everywhere.
The better answer, IMHO, is to leave domain names turned on for all usernames. Then, solving the problem with SquirrelMail is simple. The easiest answer is to have your users configure their e-mail address in the Options panel. That is what SM will use when sending outgoing mail, just like Thunderbird. Problem solved. There are other ways to accomplish the same thing though. For example, the[A HRef="http://www.SquirrelMail.org/plugin_view.php?id=181">New User Wizard</A> plugin forces the user "to enter their Full Name and Email Address prior to reading or composing" a message. That solves the problem the same way as having them enter it manually above, but it guarantees that it will happen right away. An even better solution (which can be used in combination with the New User Wizard and other plugins) is the[A HRef="http://www.SquirrelMail.org/plugin_view.php?id=47">Virtual Host Login</A> plugin, which "allows you to use just one SquirrelMail installation to host web mail for multiple domains. It is highly configurable," and it can automatically extract the virtual domain name out of the URL (i.e. webmail.domain.com) to determine how the user should log in (e.g. username instead of username.domain.com), how their outgoing e-mail address should be configured, etc.
< SoapBox ON]
The Virtual Host Login plugin is the "Right Way" to run SquirrelMail in a hosted environment. IMHO, this is how Virtualmin Professional should be adding value when installing SquirrelMail, by properly configuring these plugins for a system-wide installation, instead of by installing multiple copies of it for each domain. Doing that is the equivalent of installing multiple copies of Webmin and Usermin, which would certainly be considered a "Bad Thing". 
< SoapBox OFF]
The last part of your question was regarding sending mail from the command line. I don’t think many people do this on a regular basis, so it is pretty rare for this to be a concern, especially in a virtual hosting environment where few if any users even have access to a shell. Nevertheless, there is a solution to this problem too. I believe it involves setting up the[A HRef=“http://www.Postfix.org/canonical.5.html”>canonical table</A> in postfix, which is similar to the sendmail genericstable. This is basically the reverse function of an virtual user / aliases file, so it converts local user names (i.e. username.domain.com) into their preferred e-mail address (i.e. user@domain.com). I believe this is simple to achieve, especially with the regex features in postfix, so I will submit this as a future enhancement request in the bug tracker.
Joe, not to toot my own horn, but I think other people could benefit from this information, especially regarding the New User Wizard plugin in SquirrelMail. Could you add it to the FAQ or documentation? (You can leave out my soap box for now.)