我有一个使用 sendmail 函数发送电子邮件的 shell 脚本,代码如下
mailalert(){
sendmail -F Sender-Name -it <<END_MESSAGE
To: Recipient@example.com
Subject: Subject
Message
END_MESSAGE
}
Run Code Online (Sandbox Code Playgroud)
每当我调用这个函数时它就会被执行。现在我有一个文本文件,我想使用 sendmail 作为附件或作为它发送的电子邮件中的消息发送。我怎样才能做到这一点?我尝试了很多技巧,但似乎没有任何效果。请帮忙。
我奔跑着Linux BeagleBoard-xM 3.12.5-armv7-x10 #1 SMP Fri Dec 13 03:06:20 UTC 2013 armv7l armv7l armv7l GNU/Linux,/var/log/syslog却被诸如Jan 11 10:21:09 BeagleBoard-xM sm-msp-queue[8036]: s0AJ66SY002027: to=root, ctladdr=root (0/0), delay=14:15:03, xdelay=00:00:00, mailer=relay, pri=2011764, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1].
当我丢弃 sendmailapt-get remove sendmail甚至重新启动时,我感到非常惊讶。我检查了进程以确保 sendmail没有运行:
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 2996 1936 poll_s Ss ? 0:08 /sbin/init
1 0 2 0 …Run Code Online (Sandbox Code Playgroud) 我写了一个脚本,一切都根据我的需要运行良好:
a=$(df -h /mnt/smb | tail -n +3 | tr -s ' ' | tr '%' ' ' | cut -d ' ' -f 5)
echo $a
if [[ $a -ge 30 ]]; then
cat /etc/diskspace/text.txt | sendmail test.gmail.com
fi
Run Code Online (Sandbox Code Playgroud)
我想通过 Cron 每分钟运行一次这个脚本,看我的 crontab:
* * * * * /etc/diskspacae/vpndrive.sh
Run Code Online (Sandbox Code Playgroud)
如您所见,如果驱动器空间超过 80%,运行此脚本后,我想使用 sendmail 在我的电子邮件中收到通知。
但是当我从 Cron 运行这个脚本时我还没有得到它,并且我在/var/spool/mail/root.
ERROR Message: /etc/diskspace/vpndrive.sh line 34 : sendmail: command not found.
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 msmtp 作为系统配置来设置 Ubuntu 20.04。
我安装了 msmtp (v1.8.6-1) 和 heirloom-mailx (v12.5-2+deb7u1build0.14.04.1)。
配置文件/etc/msmtprc (chmod: 600) 有以下内容:
# Set default values for all accounts.
account default
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp
# gmail
host smtp.gmail.com
port 587
from <account>@gmail.com
user <account>
password <password>
# Syslog logging with facility LOG_MAIL instead of the default LOG_USER
syslog LOG_MAIL
Run Code Online (Sandbox Code Playgroud)
日志文件/var/log/msmtp文件模式为 660。
文件/etc/mailrc (chmod: 600) 包含以下内容:
set sendmail="/usr/bin/msmtp"
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 sendmail 从终端发送电子邮件时,我收到以下sendmail: account default not found: no configuration file …
我的系统日志中经常出现错误(它们恰好每 10 分钟发生一次,直到第二次):
Feb 22 13:01:24 computer sm-mta[5747]: q1MBVO6B003778: SYSERR(root): hash map "Alias0": missing map file /etc/mail/aliases.db: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我不知道如何解释这些错误,但我猜测sm-mta[5747] 错误的一部分是应用程序名称和进程 ID 是否正确?如果是这样,这对我来说似乎很奇怪,因为我没有安装 sm-mta 并且系统监视器没有具有该编号的进程 ID。我可能像往常一样愚蠢!
请问如何找出导致这些错误的原因并阻止它们发生?
每隔 20 分钟,连续几天,sm-msp-queue(sendmail我猜是与 相关的)在我的里面写了一条ubun这样的消息:
无法限定我自己的域名 (ubun) -- 使用短名称
哪里ubun是网络节点主机名( 的输出uname -n和内容/etc/hostname)。
的内容/etc/mail/local-host-names包括两行:localhost和ubun。
该文件/etc/hosts以两行开头:
127.0.0.1 localhost
127.0.0.1 ubun
Run Code Online (Sandbox Code Playgroud)
该文件/etc/cron.d/sendmail包含一个设置为每 20 分钟运行一次的 cronjob:
*/20 * * * * smmsp test -x /etc/init.d/sendmail && /usr/share/sendmail/sendmail cron-msp
Run Code Online (Sandbox Code Playgroud)
但是,我不知道该命令smmsp应该做什么;我不能单独运行它,也不能使用sudo(I get sudo: smmsp: command not found)。跑步sudo /usr/share/sendmail/sendmail cron-msp好像什么都没做。
有任何想法吗?
mail我多次尝试使用以下命令发送邮件:
abdennour@pc: mail -v abd.tm@gmail.com
Subject: Hello World!
This is an email to myself.
Hope all is well.
.
Cc:
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
/usr/lib/sendmail: No such file or directory
"/home/abdennour/dead.letter" 9/261
. . . message not sent.
Run Code Online (Sandbox Code Playgroud) 我在这里共享一个 perl 脚本,它应该在邮件正文中发送带有 HDD/RAM 状态的邮件:此外,只有当 %HDD 使用率高于 50% 时才会发生 HDD 输出。
如何在消息正文中包含声明的变量(此处@hdd和@ram)?
如果硬盘使用率低于 50%,如何让程序在不发送邮件的情况下终止..?或者简单地说,当且仅当 HDD % 高于 50% 时,邮件程序才能工作。
在下面的脚本中,硬盘/内存检查部分工作正常,邮件发送部分也工作正常。除了在收到的邮件中直接显示“@hdd”和“@ram”而不是 HDD/RAM 值。
\#!/usr/bin/perl
@hdd = grep {$_ >50} (\`df -H`=~/(\S+%)/g);
@ram = \`free | grep Mem | awk '{print \$3/\$2 * 100.0}'`;
use MIME::Lite;
$to = 'admin@company.co.in';
$from = 'alerts@company.co.in';
$subject = 'HDD / RAM alerts';
$message = 'The % HDD usage is @hdd and the % RAM usage is @ram';
$msg = MIME::Lite->new(
From => …Run Code Online (Sandbox Code Playgroud) 我有一台通过 vbox 运行 ubuntu 来宾的 win7 主机。它配置了桥接网络适配器,我使用 DHCP 将 192.168.0.5 的 ip 分配给映射到我的 windows 主机文件中的 smartstart.dev 的来宾。我还没有对 ubuntu 端的主机做任何事情。
我正在测试一个网站,需要 sendmail 工作。我已经安装了sendmail,但是没有发送邮件。当我查看邮件错误日志时,我可以看到很多这样的行:
Jan 14 17:00:01 djw-ss sm-msp-queue[2771]: My unqualified host name (djw-ss) unknown; sleeping for retry
Jan 14 17:01:02 djw-ss sm-msp-queue[2771]: unable to qualify my own domain name (djw-ss) -- using short name
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何让这个工作?奇怪的是我在另一个 vb 上有类似的设置 - 我认为我没有做过任何不同的事情,而且开箱即用。