One may find it necessary to configure sendmail to authenticate and relay via another SMTP server, such as one provided by your ISP. In order to do this under FreeBSD, sendmail needs to be rebuilt with support for SASL and a few config changes are required.

cd /usr/ports/security/cyrus-sasl2 && make install clean

Untick AUTHDAEMOND, OTP and NTLM.

Edit /etc/make.conf and add:

SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2

Rebuild/reinstall sendmail:

cd /usr/src/lib/libsmutil;make cleandir && make obj && make
cd /usr/src/lib/libsm;make cleandir && make obj && make
cd /usr/src/usr.sbin/sendmail;make cleandir && make obj && make && make install

Create /etc/mail/authinfo with the following content (assuming your SMTP server supports PLAIN auth within TLS):

AuthInfo:smtp.server.host "I:username" "P:password" "M:PLAIN"
cd /etc/mail && makemap hash authinfo<authinfo;chgrp smmsp authinfo*;chmod o-rwx authinfo*
cp freebsd.submit.mc `hostname`.submit.mc;cp freebsd.mc `hostname`.mc

Edit /etc/mail/hostname.submit.mc and /etc/mail/hostname.mc and add the following before the msp line:

FEATURE (`authinfo')
define(`SMART_HOST', `smtp.server.host')
/etc/rc.d/sendmail stop && /etc/rc.d/sendmail start

Profit!

If you upgrade the cyrus-sasl port, you may need to rebuild/reinstall/restart sendmail as indicated in step 3. src-all is required from svn.