如何更改 mailx?

如何更改 mailx?

我的虚拟机遇到了问题。

我在 OpenVZ 中使用了相同的模板 (Debian 7min),但不知何故,这两个模板使用了不同的 mailx。我有一个小脚本,用于发送状态邮件:

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

它在一台服务器上可以找到,但另一台服务器却给我一个错误消息“未知命令-S”。

好的,我知道 mailx 只是一个虚拟包,我通常安装 bsd-mailx,但两个服务器都显示它们的设置相同

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 邮件

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

问题是,mailx 之类的从来不支持任何类型的版本信息,所以 mailx --help 或 --version 只是说“未知选项”——所以我甚至无法弄清楚 mailx 的“版本”是什么

这是服务器 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

这是服务器 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]

显然不相同。有谁能帮我把 mailx 从服务器 1 '获取' 到服务器 2 吗?我没主意了。

答案1

因此在 server1 中您有 heilroom-mailx /etc/alternatives/mailx -> /usr/bin/heirloom-mailx,即第二台服务器使用bsd-mailx

apt-get install heirloom-mailx如果您想从 server1 获取 mailx,请在两台服务器上执行此操作。

安装后,服务器应该自动使用 heirloom 作为 mailx,如果没有,请执行以下操作:

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

答案2

扩展 @darek 和 @nadir-latif 的答案,/usr/bin/mail这也是一种替代方案,并且是替代方案的从属mailx,从检查 Wheezy/Jessie 安装来看,heirloom-mailx优先级为 60,因此要安装使用

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 \
/usr/share/man/man1/heirloom-mailx.1.gz

这将允许设置mailmailx替代方案。在 Stretch 上,mail.mailutils优先级为 30,从手册页

当链接组处于自动模式时,组成员指向的替代方案将是具有最高优先级的替代方案。

因此,如果您使用优先级60并将其设置为自动,则无需明确设置替代方案,否则正如@darek 所述使用

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

相关内容