User Tools

Site Tools


s-mailx

This is an old revision of the document!


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
        }
1)
the s-nail(1) manpage also available in html format on the project's website
s-mailx.1644519870.txt.gz · Last modified: 2022/02/10 19:04 by zilog