标签: sendmail

使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

我想在 Ubuntu 服务器上启用简单的 php mail() 功能。这将仅用于发送管理资料和日志。这就是我在这台机器上想要的所有邮件功能。

1) 你能说出 1 或 2 个易于设置的标准 ubuntu 包吗?应该占用很少的资源和很少的依赖项。哪些是用于此目的的最常见的软件包,我想用它做什么的利弊是什么?(这台机器永远不会收到邮件。)

2) 在我选择了一个邮件程序包后,我将如何从命令行测试它?我必须允许到远程端口 25 的传出连接是否正确?

3) 是否有任何步骤可以确保 php 现在可以将它用于 mail() 函数?

我希望将其作为我可以遵循的未来服务器安装的秘诀,因此了解可能会出现什么问题以及如何处理它会很有趣。

编辑:我最后安装了 sendmail,这删除了 ​​exim4。Php mail() 在那之后工作。所以对我来说,sendmail 似乎比 exim4 容易。以前用exim4安装的php5不发邮件。

email ubuntu php sendmail

11
推荐指数
1
解决办法
2万
查看次数

如何使用远程 SMTP 配置 php.ini?

如何配置 PHP 以通过远程 SMTP 服务器使用 mail() 发送邮件?

我曾尝试使用 php.ini 执行此操作,但似乎只能在 Windows32 下执行此操作,而我想在我的 Unix 服务器上执行此操作。

我还尝试更改 sendmail 的配置,以便它使用远程 SMTP 服务器,但我不确定这是否可行。

php smtp sendmail php.ini

11
推荐指数
2
解决办法
4万
查看次数

如何使用 sendmail 指定传出 HELO?

使用 sendmail 发送外发电子邮件时,如何指定邮件服务器在 HELO/EHLO 中显示的 FQDN(主机和域名)?

email linux sendmail

11
推荐指数
2
解决办法
3万
查看次数

Linux - 是否需要 MTA?

我的 VPS 映像 (Debian 6) 预装了 sendmail 作为 MTA。我会将此服务器用作 Web 服务器,也可能用作其他用途,但不会用作邮件服务器。我想删除尽可能多的不需要的服务以节省资源。MTA 可以安全移除吗?后果是什么?

linux email-server debian sendmail debian-squeeze

11
推荐指数
2
解决办法
3373
查看次数

如何为发件人地址配置真实域名

我尝试使用 phpmail()函数发送电子邮件,但不知何故失败,抱怨需要真实域名。在邮件日志中观察到以下内容:

sendmail 4984 r25984:from=apache,size=273,class=0,nrcpts=1,msgid=<201.r25@localhost.localdomain>,relay=apache@localhost
sendmail 4985 r25985:规则集=check_mail,arg1=,relay= mydomain.com [127.0.0.1], reject=553 5.5.4 ... 发件人地址需要真实域名
sendmail 4984 r25984: to=external@server.com, ctladdr=apache (48/48), delay=00: 00:01,xdelay=00:00:00,mailer=relay,pri=30273,relay=[127.0.0.1] [127.0.0.1],dsn=5.6.0,stat=数据格式错误
sendmail 4984 r25984:r259 DSN:数据格式错误

每当 logrotate 出现问题时,cron 都能够向 external@server.com 发送电子邮件。我不确定为什么 php 无法这样做。我尝试使用以下内容更改 `sendmail.mc 中的默认配置:

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl
Run Code Online (Sandbox Code Playgroud)

但是,它似乎没有任何影响。php 邮件功能中的地址标题已经设置好了。我还确保httpd_can_sendmail启用了 SELinux 。我还需要做什么才能使邮件送达?

linux php configuration sendmail

11
推荐指数
1
解决办法
6万
查看次数

如何停止 Sendmail 从 IPv6 而不是 IPv4 发送邮件

今天我注意到 Gmail 将从我的服务器收到的所有邮件发送到垃圾邮件文件夹。我检查了邮件标题,发现以下内容:

Authentication-Results: mx.google.com;
       spf=neutral (google.com: 2001:4ba0:cafe:........ is neither permitted nor denied by best guess record for domain of root@myserver.com) smtp.mail=root@myserver.com
Run Code Online (Sandbox Code Playgroud)

因此,看起来 Sendmail 是从 IPv4 的 IP6 地址发送邮件,并且没有 IPv6 的 SPF 和 PTR 记录。如何强制 Sendmail 从 IPv4 发送邮件?

谢谢。

sendmail

11
推荐指数
2
解决办法
2万
查看次数

sendmail 电子邮件存储在哪里?

我正在尝试为 sendmail 构建一个自动回复脚本(不,我还不想使用预先构建的脚本),但我似乎无法在我的服务器上找到收到的电子邮件的位置。我必须指定我的配置不是默认配置。

我看过了/root,那里没有邮件文件夹。(除了root,我没有任何其他用户)。我查看了/var/mail/root,只有一些日志是通过邮件发送给我的,但不是我从用户那里收到的外部邮件。

我已经检查过/var/log/maillog,但没有错误。

我不知道在哪里看。有人可以帮助我吗?

email sendmail

10
推荐指数
2
解决办法
3万
查看次数

为什么要使用 Dovecot 和 Postfix/Sendmail?

如果我在这里遗漏了一些明显的东西,请原谅我..... 但是为什么大多数 linux 服务器发行版都带有 Dovecot 和 Postfix(或 sendmail)?据我所知,他们三个都是邮件传输代理,Dovecot 具有作为邮件传递代理的“次要”功能......

Dovecot 不是一个很好的 MTA 吗?或者还有其他一些原因为什么您想要使用上述的组合而不是一个看似无所不能的单个程序?

postfix sendmail dovecot

10
推荐指数
1
解决办法
1万
查看次数

如何将 sendmail 配置为通过 MX 记录而不是本地主机发送邮件?

我试图让 sendmail 将邮件传输到 MX 记录中指定的服务器,因此当服务器向 me@domain.com 发送电子邮件时,我希望它跳过 localhost 并直接转到 gmail。

我已经浏览了 sendmail 文档,但不太明白如何解释我的情况。本质上,我的服务器的主机名是“www.domain.com”,但是当我向“me@domain.com”发送电子邮件时,它最终会出现在本地邮件池中。

当我在调试模式下运行 sendmail 时:

sendmail -bt
> $=w
Run Code Online (Sandbox Code Playgroud)

我得到:

www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___] 
Run Code Online (Sandbox Code Playgroud)

因此,它正在拦截所有发往domain.com. 我不希望它到达localhost. 我希望它转到 gmail 服务器。

绑定到其他地址的所有邮件都可以正常工作。我也将 sendmail 配置为使用 DKIM。

我已经向 mailertable 添加了一条记录(并重建了 mailertable.db 并重新编译了 mc>cf 文件),但我不确定这是否是我需要做的,或者我是否做得正确。

domain.com esmtp:[aspmx.l.google.com]
Run Code Online (Sandbox Code Playgroud)

如何让它允许绑定到 users@domain.com 的邮件离开服务器?

附加信息:这是我的 sendmail.mc 文件:

divert(-1)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl

define(`confDEF_USER_ID', ``8:12'')dnl

define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl …
Run Code Online (Sandbox Code Playgroud)

sendmail

9
推荐指数
2
解决办法
2万
查看次数

如何为 sendmail TLS_Rcpt 使用通配符?

sendmail 允许对 TLS 对话设置一个限制。我想检查发送到 example.com 的消息是否发送到具有 *.messagelabs.com 证书的服务器。我想防范 DNS 欺骗和 MitM。如果 messagelabs 只有一台服务器,那会很容易:

TLS_Rcpt:example.com VERIFY:256+CN:mx.messagelabs.com
Run Code Online (Sandbox Code Playgroud)

然而,messagelabs 有许多服务器和不同服务器的集群,它们具有相同名称的唯一 IP 和证书。一切都很好,我只想检查我向其发送邮件的服务器是否已被认证为属于 messagelabs。

我试过了

TLS_Rcpt:example.com VERIFY:256+CN:messagelabs.com
TLS_Rcpt:example.com VERIFY:256+CN:*.messagelabs.com
TLS_Rcpt:example.com VERIFY:256+CN:.*.messagelabs.com
Run Code Online (Sandbox Code Playgroud)

但我得到了类似的错误

CN mail31.messagelabs.com does not match .*.messagelabs.com
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?这是对我们的经常性请求(主要针对 TLS_Rcpt:example.com VERIFY:256+CN:*.example.com 等配置),所以我准备修改 sendmail.cf,但我无法理解

STLS_req
R $| $+         $@ OK
R<CN> $* $| <$+>                $: <CN:$&{TLS_Name}> $1 $| <$2>
R<CN:$&{cn_subject}> $* $| <$+>         $@ $>"TLS_req" $1 $| <$2>
R<CN:$+> $* $| <$-:$+>  $#error $@ $4 $: $3 " CN " $&{cn_subject} " does not match …
Run Code Online (Sandbox Code Playgroud)

email-server smtp sendmail tls

9
推荐指数
1
解决办法
829
查看次数