I am having a problem in my VMs.

I used the same template (Debian 7min) in OpenVZ, but for whatever reason those two are using a different mailx. I have a small script which I use to send statusmails:

    mailx -v -s "$subject" -S smtp=$smtphost -S from="$mailfrom" -S smtp-auth-user=$smtpuser \
 -S smtp-auth-password=$smtppwd $emailto </dev/null

It works find on one server, the other one give me an error message 'unknown command -S'.

Ok, I know mailx is just a virtual package, and I usually install bsd-mailx, but both server show they are setup identical

ls -al /etc/alternatives/ma*

lrwxrwxrwx 1 root root 18 Feb  9 20:07 /etc/alternatives/mailx -> /usr/bin/bsd-mailx

dpkg --get-selections | grep mail

bsd-mailx                   install
fetchmail                   install
procmail                    install
rmail                       install
sendmail                    install
sendmail-base                   install
sendmail-bin                    install
sendmail-cf                 install
sendmail-doc                    install

Problem is, mailx like never supports any kind of version info, so mailx --help or --version just says 'unknown option' - so I cant even figure out what 'version' of mailx it is

This is output from server 1

mailx: illegal option -- -
Usage: mailx -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users

this is output from server 2

mailx: invalid option -- '-'
usage: mailx [-dEIinv] [-a header] [-b bcc-addr] [-c cc-addr] [-s subject] to-addr ...
             [-- sendmail-options ...]
       mailx [-dEIiNnv] -f [name]
       mailx [-dEIiNnv] [-u user]

Clearly not idential. Any helps how I can 'get' the mailx from server 1 to server 2? I am out of ideas.


So in the server1 you have heilroom-mailx i.e. /etc/alternatives/mailx -> /usr/bin/heirloom-mailx, the second server uses bsd-mailx.

Do apt-get install heirloom-mailx on both servers if you want to have mailx from server1.

After installing, server should automatically use heirloom as mailx, if not do:

sudo update-alternatives --set mailx /usr/bin/heirloom-mailx
  • On Debian Stretch before running the above command, you need to register the mailx alternative using the command: update-alternatives --install /usr/bin/mailx mailx /usr/bin/heirloom-mailx 10 – Nadir Latif Nov 8 '17 at 10:50

To expand on the answer from @darek and @nadir-latif /usr/bin/mail is also an alternative and is a slave of the mailx alternative, from checking Wheezy/Jessie installations the heirloom-mailx priority was 60 so to install use

sudo update-alternatives --install /usr/bin/mailx mailx /usr/bin/heirloom-mailx \
60 --slave /usr/bin/mail mail /usr/bin/heirloom-mailx \
--slave /usr/share/man/man1/mail.1.gz mail.1.gz \
/usr/share/man/man1/heirloom-mailx.1.gz --slave \
/usr/share/man/man1/mailx.1.gz mailx.1.gz \

which will allow setting both the mail and mailx alternatives. On Stretch the mail.mailutils has a priority of 30 and from the man page

When a link group is in automatic mode, the alternatives pointed to by members of the group will be those which have the highest priority.

so if you use the priority of 60 and you have it set to automatic you will not need to explicitly set the alternative, otherwise as @darek states use

sudo update-alternatives --set mailx /usr/bin/heirloom-mailx

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.