我正在尝试在 ssh root 登录时创建电子邮件警报,因此我必须安装ssmtp和邮件实用程序。
然后我配置ssmtp.conf文件如下:
# Config file for sSMTP sendmail
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
#root=postmaster
#Adding email id to receive system information
root = rootuser@gmail.com
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
#mailhub=mail
mailhub = smtp.gmail.com:587
AuthUser=dmymail@gmail.com
AuthPass=plaintext password
UseTLS=YES
UseSTARTTLS=YES
# …Run Code Online (Sandbox Code Playgroud) 如何记录所有通过 sSMTP 的电子邮件?
我可以将我的应用程序指向一个包装器脚本,我只是不知道如何编写一个包装器脚本来将标头和内容记录到文件中(尽可能多的信息)。
谢谢!:-)
我试图了解 Postfix 究竟是如何处理电子邮件的——以及 SMTP 邮件交易的一些更详细的细节。我的短期目标是调试一个专有的(二进制的、闭源的)SMTP 客户端,但我首先想我会检查成功的 SMTP 事务中会发生什么。
我计划在我们的 LAN 防火墙阻止传出 SMTP(端口 25),因此我将 Postfix 配置为内部邮件服务器,以接受来自(原始)本地客户端软件的邮件,该软件只能通过未经身份验证的 SMTP(通过端口 25)发送电子邮件。
我smtpd通过在Postfix 日志疑难解答-v中master.cf描述的附加详细标志来打开 Postfix进程的调试。然后,我使用 Cygwin Mutt 和sSMTP( 的最小实现)从我自己的工作站发送了一封电子邮件。sendmail
Postfix 日志显示,在RCPT TO:成功处理该行且收件人地址可接受后,Postfixsmtpd为该事务分配了一个队列 ID,并使用250 OK.
但是,DATASMTP 客户端并没有发出命令,而是发出了RSET重置/中止当前邮件事务的命令,Postfix 回复了250 OK.
我对这个命令的作用做了一些研究,不出所料,简单邮件传输协议 RFC 2821提供了最全面的信息:
此命令指定将中止当前邮件事务。任何存储的发送者、接收者和邮件数据必须被丢弃,并清除所有缓冲区和状态表。接收方必须向不带参数的 RSET 命令发送“250 OK”回复。客户端可以随时发出重置命令。如果在 EHLO 之后立即发布、在会话中发布 EHLO 之前、在数据结束指示符已发送和确认之后或在 QUIT 之前立即发布,则它实际上等效于 NOOP(即,如果没有效果)。SMTP 服务器不得因接收到 RSET 而关闭连接;该操作是为 QUIT 保留的(参见第 4.1.1.10 节)。
由于 EHLO …
我已经安装了 ssmtp,我可以使用 ssmtp 命令发送电子邮件。但是邮件命令不起作用。我该如何设置?
我已经通过今天在我的服务器上设置 Logwatch 并成功安装了这一切。
我在 Digital Ocean 上遵循了本指南并将MailFrom参数设置为:
MailFrom = mailer@mydomain.com
我正在使用 ssmtp 使用我的 Postmark App 帐户发送电子邮件,它正在通过我的 Postmark 活动源,但它显示“发件人”字段被设置为 root。
Personaladdress@hotmail.com 的 SMTP API 错误:“发件人”地址无效:“root”。
查看尝试发送的电子邮件的原始来源,它显示了这一行:
From: root
这是我用来生成发送的命令:
sudo logwatch --detail Low --mailto personaladdress@hotmail.com --service http --range today
我哪里出错了,或者我该怎么做才能让它发送,mailer@mydomain.com因为 Postmark 要求正确发送发件人地址,否则它将不允许它通过并返回错误
更多细节
Logwatch 版本:Logwatch 7.4.0 (released 03/01/11)
系统:Debian 8 (Jessie)
在我的服务器上使用 sSMTP 从 Postmark 调试日志发送电子邮件:
Config After Command Line Parsing:
supress_ignores -> 0
pathtozcat -> zcat
html_header -> /usr/share/logwatch/default.conf/html/header.html
logdir -> /var/log
hostlimit …Run Code Online (Sandbox Code Playgroud) 我不明白为什么我的 AWS EC2 ( Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64))上的 cron似乎无法通过 sSmtp 向 AWS SES 发送电子邮件。
这有效:echo "test" | ssmtp my@myemail.com我从本地用户那里收到一封电子邮件。
这有效:echo "test" | sudo ssmtp my@myemail.com我收到一封来自 root 的电子邮件。
但是,当 cron 运行并尝试发送电子邮件时,我什么也没有得到,这出现在 syslogs:sSMTP[14608]: 554 Transaction failed: Missing final '@domain'或有时:554 Transaction failed: User name is missing: 'Cron Daemon <root>'。
cron 试图以谁的身份发送电子邮件?我会认为它是root。
/etc/crontab:
MAILTO="me@myemail.com"
Run Code Online (Sandbox Code Playgroud)
(我也试过MAILTO=root)
/etc/ssmtp/revaliases:
root:me@myemail.com:email-smtp.us-east-1.amazonaws.com:465
me:me@myemail.com:email-smtp.us-east-1.amazonaws.com:465
Run Code Online (Sandbox Code Playgroud)
/etc/ssmtp/ssmtp.conf:
root=me@myemail.com
mailhub=email-smtp.us-east-1.amazonaws.com:465
rewriteDomain=myemail.com
hostname=myemail.com
#UseSTARTTLS=YES
UseTLS=YES
AuthUser=XXXXXXXXXXXXXXXXX
AuthPass=XXXXXXXXXXXXXXXXX
AuthMethod=LOGIN
FromLineOverride=YES …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此命令来检查我的 postfix 服务器的端口 587。
使用nmap -P0 mail.server.com我看到这个:
Starting Nmap 5.51 ( http://nmap.org ) at 2013-11-04 05:01 PST
Nmap scan report for mail.server.com (xx.xx.xx.xx)
Host is up (0.0016s latency).
rDNS record for xx.xx.xx.xx: another.server.com
Not shown: 990 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
110/tcp open pop3
111/tcp open rpcbind
143/tcp open imap
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
5666/tcp open nrpe
Run Code Online (Sandbox Code Playgroud)
所以我知道 smtps(465 或 587)的相关端口是开放的。
当我使用时,openssl s_client …
我无法通过 gmail.com 发送电子邮件。我使用 ssmtp 设施。我在 /etc/ssmtp 中的配置文件是
root:yyyyy@gmail.com:smtp.gmail.com:587
maciek:yyyyy@gmail.com:smtp.gmail.com:587
Run Code Online (Sandbox Code Playgroud)
和 ssmtp.conf:
rewriteDomain=gmail.com
root=yyyyy@op.pl
maciek=yyyyy@op.pl
hostname=yyyyyy@gmail.com
UseTLS=YES
UseSTARTTLS=YES
AuthUser=yyyyy@gmail.com
AuthPass=MyPass
FromLineOverride=YES
Run Code Online (Sandbox Code Playgroud)
所以我尝试:
# mail yyyyy@orange.pl
Subject: ddd
ddd
.
EOT
# send-mail: Cannot open smtp.gmail.com:587
Run Code Online (Sandbox Code Playgroud)
没有什么会阻止到 Gmail 服务器的流量,如下所示:
$ telnet smtp.gmail.com 587
Trying 173.194.70.108...
Connected to smtp.gmail.com.
Escape character is '^]'.
220 mx.google.com ESMTP n1sm56130900eep.20 - gsmtp
ehlo
250-mx.google.com at your service, [83.25.153.55]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250 CHUNKING
quit
221 2.0.0 closing connection n1sm56130900eep.20 - gsmtp
Connection closed by …Run Code Online (Sandbox Code Playgroud)