我的虚拟机遇到了问题。
我在 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
这将允许设置mail
和mailx
替代方案。在 Stretch 上,mail.mailutils
优先级为 30,从手册页
当链接组处于自动模式时,组成员指向的替代方案将是具有最高优先级的替代方案。
因此,如果您使用优先级60
并将其设置为自动,则无需明确设置替代方案,否则正如@darek 所述使用
sudo update-alternatives --set mailx /usr/bin/heirloom-mailx