This is an old revision of the document!
Table of Contents
S-mailx (aka s-nail)
S-mailx is an active fork of Heirloom mailx which ceased development around 2010. S-mailx has preserved most of the latter's feature set and added many of it's own. While there were plans to remove the inheirited POP3 and IMAP functionality these features have been retained due to popular demand, though a future re-write is likely. The project's developer provides a low-volume email list for end-user support; details at the homepage.
Documentation and Features
The s-mailx manpage, s-nail(1)
1), is very detailed and the best place to learn about its features but the standouts are:
- all Heirloom-mailx features: POP3/IMAP/SMTP, folder hooks, macros, threading, etc.
- Maildir support
- readline (cmd history)
- optional coloration
- enhanced spam filtering
- detailed error reporting
One thing to be aware of is that even though s-mailx is a fork and largely a super-set of heirloom-mailx there is significant deviation with respect to command names and configuration syntax such that separate configuration files are necessary; attempting to craft a common configuration file for both will likely fail and potentially result in lost messages.
Setup
Running S-mailx
S-mailx actually installs as /usr/pkg/bin/s-nail
on NetBSD which should avoid name collision with the native NetBSD mail/mailx and heirloom-mailx (/usr/pkg/bin/mailx) clients.
Configuration
Several S-mailx options are pre-set via /usr/pkg/etc/s-nail.rc
, the system-wide S-mailx configuration file; worth checking out to see what the defaults are before making customizations.
The default user configuration file for S-mailx is ~/.mailrc
, unfortunately also used by the native NetBSD mail(1) and Heirloom-mailx clients. If you never plan to use the other clients then you can go ahead and put all your settings in ~/.mailrc
; chances are the native NetBSD mail(1) will just ignore any settings it doesn't understand; Heirloom-mailx likely will complain more. A somewhat better option which maintains settings separation is to create a minimal ~/.mailrc
and add the following to it:
set mailx-extra-rc="$HOME/.s-nailrc"
This will allow occasional / accidental use of the native mail(1) client and keeps all the “S-mailx-specific” settings in ~/.s-nailrc
. Alternately, it's possible to (re)set MAILRC
(shell environment variable) on-the-fly via a launch script for settings separation.
A basic SDF specific S-mailx configuration (using both ~/.mailrc and ~/.s-nailrc):
- ~sdfuser/.mailrc
## ~sdfuser/.mailrc # Set top of mail folder tree to ~/mail: set folder=mail # Tell s-nail where to get additional configurations: set mailx-extra-rc="$HOME/.s-nailrc"
Note that this technique is also used for the Heirloom mailx client via the NAIL_EXTRA_RC variable; having both NAIL_EXTRA_RC
and mailx-extra-rc
set in ~sdfuser/.mailrc
will likely produce ignore-able but fairly annoying errors when S-mailx is run.
- ~/.s-nailrc
## ~sdfuser/.s-nailrc file - use with /usr/pkg/bin/s-nail # hold mail in system Inbox (default): set hold # see s-nail(1) for details: set v15-compat=yes # set EDITOR if different than default: #set EDITOR=vi # allow "dot" EOF; reverse 'r'/'R'; print next msg: set bsdcompat dot flip autoprint ## Mbox settings: set from='SDF User <sdfuser@sdf.org>' set reply-to='SDF User <sdfuser@sdf.org>' # redundant is set in ~/.mailrc: set folder=mail # '+' prefix => relative to ~/mail/: set MBOX=+Save set record=+Sent shortcut saved +Save shortcut sent +Sent ## automatic MIME type processing: # pipe all webified msgs thru lynx(1): set pipe-text/html='?* lynx -stdin -dump -force_html' ## command aliases: # use to return from remote accts: commandalias home 'account null' # match mail(1) cmd: commandalias inc 'newmail' # quiet the 'set' cmd: commandalias set '\ignerr set' # thread/unthread cmds: commandalias thrd 'sort thread' commandalias uthr 'unsort' ## email address aliases: alias snail-list "S-Mailx List <s-mailx@sdaoden.eu>" # group aliases - note: cc/bcc mailings need to have # at least one To: entry #alias hop-list hoppy@mud.bog \ # mrwarts@mud.bog \ # "Kermit <froggy@mud.bog>" ## SMTP stuff: # wait until MTA finishes when sending mail. # => allows seeing any errors: set sendwait ### IMAP accounts section: ### # Another SDF user account: account sdfuser2 { set hold # just because.. set ssl-verify-mx.sdf.org=ignore set MBOX=+Saved set folder=imaps://sdfuser2@mx.sdf.org/ set inbox=imaps://sdfuser2@mx.sdf.org/ set password-sdfuser2@mx.sdf.org="********" set from='SDF User2 <sdfuser2@sdf.org>' set record=+Sent shortcut saved +Saved shortcut sent +Sent } # Typical Gmail IMAP/SMTP w/ SSL setup (enable IMAP on your acct first); # note use of "URL percent encoded" chars in some settings, i.e. '%40' = '@' : account gmail { set hold set folder="imaps://gmail.user%40gmail.com@imap.gmail.com/INBOX" set inbox="imaps://gmail.user%40gmail.com@imap.gmail.com/INBOX" set password-gmail.user%40gmail.com@imap.gmail.com='********' set shortcut sent="imaps://gmail.user%40gmail.com@imap.gmail.com/[Gmail]/Sent Mail" set shortcut trash="imaps://gmail.user%40gmail.com@imap.gmail.com/[Gmail]/Trash" set from='Gmail User <gmail.user@gmail.com>' set reply-to='Gmail User <gmail.user@gmail.com>' set record=+Sent shortcut saved +Saved shortcut sent +Sent ### Gmail SMTP stuff ### # => reserved chars in SMTP pwd need to be URL percent encoded <= set mta="smtps://gmail.user%40gmail.com:*********@smtp.gmail.com }