The short answer is that you can't. SMTP simply isn't designed to do that. In the old days (tm), mail servers were prepared to relay mail for everyone. This proved unsustainable in the spam era, and mail servers now generally only relay mail for their legitimate user community, identified by IP address, authentication, or both. But they will still generally relay any mail for any such user, even mail claiming to be from someone other than that user.
I'm sure it's possible to tie your mail server down, such that you will only allow your authenticated users to send mail from the user as whom they have authenticated. You could also tie your server down to refuse email from outside your organisation that claimed to be from within. But I'd advise against it, because it builds a culture of false expectation: your users, knowing that they can trust the sender of internal mail received internally, may start to trust the sender of external mail received internally (which you have no way to authenticate), or trust the sender of internal mail received externally (which you can't enforce).
Better, IMHO, to educate users that they can't trust the declared sender of an email. If you really want to be able to authenticate the sender of an email, investigate cryptographic technologies like OpenPGP, and have your users create, exchange, and use their keys.
Edit: I'm not a gmail user, so I don't know if gmail prevents authenticated users sending email from some other sender. But as I said above, even if it does, that doesn't stop someone sending email to a third-party recipient claiming to be from such a gmail user (yes, I'm aware that gmail.com publishes an SPF record; but it's a weak record, ending in ?all
, and in any case you can't mandate that the recipients mail server checks it). Behaving as if email authenticates the sender is a bad idea, because even though in some cases it may do, it doesn't in all cases (or even most cases).