sendmail 在linux 中如何启动

sendmail 在linux 中如何启动,第1张

分类: 电脑/网络 >> *** 作系统/系统故障

解析:

Sendmail的配置十分复杂。它的配置文件是sendmail.cf,位于/etc/mail目录下。由于sendmail.cf的语法深奥难懂,很少有人会直接去修改该文件来对Sendmail服务器进行配置。我们一般通过m4宏处理程序来生成所需的sendmail.cf文件。创建的过程中还需要一个模板文件,系统默认在/etc/mail目录下有一个sendmail.mc模板文件。

我们可以根据简单、直观的sendmail.mc模板来生成sendmail.cf文件,而无需直接编辑sendmail.cf文件。可以直接通过修改sendmail.mc模板来达到定制sendmail.cf文件的目的。这里介绍创建sendmail.cf文件的步骤:

(1)备份原有sendmail.cf文件

在终端命令窗口运行以下命令:

cp /etc/mial/sendmail.cf /etc/mail/sendmail.cf.BAK

(2)生成sendmail.cf文件

根据sendmail.mc模板文件产生sendmail.cf配置文件,并导出到/etc/mail/目录下:

m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf

(3)重启sendmail服务

[root@ahpeng root] /etc/rc.d/init.d/sendmail restart

很显然,用m4宏编译工具创建sendmail.cf文件比较方便,而且不容易出错,更可以避免某些带有安全漏洞或者过时的宏所造成的破坏。一个sendmail.mc模板的大致内容如下:

divert(-1)dnl

......

include('/usr/share/sendmail-cf/m4/cf.m4')dnl

VERSIONID('setup for Red Hat Linux')dnl

OSTYPE('linux')dnl

......

dnl #

dnl define('SMART_HOST',' *** tp.your.provider')

dnl #

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

define('confTRUSTED_USER', ' *** msp')dnl

dnl define(′confAUTO_REBUILD′)dnl

......

这里介绍sendmail.mc模板的语法组成:

dnl:用来注释各项,同时dnl命令还用来标识一个命令的结束。

divert(-1):位于mc模板文件的顶部,目的是让m4程序输出时更加精简一些。

OSTYPE ('OperationSystemType'):定义使用的 *** 作系统类型,显然这里应该用linux代替OperationSystemType,注意要用一个反引号和一个正引号把对应的 *** 作系统类型括起来。

define:定义一些全局设置,对于Linux系统,设置了OSTYPE之后,可以定义下面的一些全局参数,如果不定义,就使用默认值。这里举两个简单例子:define('ALIAS_FILE','/etc/aliases')

定义别名文件(alia file)的保存路径,默认是/etc/aliases

define('STATUS_FILE', '/etc/mail/statistics')

sendmail的状态信息文件。

以上只是sendmai.mc的一些简单的语法解释,更多的参数含义及其配置信息可以参见sendmail/m4/eaking_config。

为新用户开电子邮件账号

在Linux里为新用户开设电子邮件账户比较简单,只需在Linux系统里新增一个用户即可。单击"主菜单→系统设置→用户和组群"菜单项,打开"Red Hat用户管理器"对话框,单击"添加用户"按钮,在出现的"创建新用户"对话框里指定用户名、登录口令即可,如图3所示。

假设我们添加了一个用户Peter(密码为peter),这样该用户就有了一个邮件地址Peter@YourDomain(此处的YourDomain用你自己域名代替)。

以上过程也可以在终端命令窗口运行以下命令来实现:

[root@ahpeng root]#adduser peter -p peter

为电子邮件账户设置别名

有一些用户想使用多个电子邮件地址,是不是需要创建多个邮件账号呢?我们可以使用别名(alias)来解决这个问题。

比如说,用户peter想拥有以下3个电子邮件地址:

peter@YourDomain、dearpeter@ YourDomain、truepeter@ YourDomain。

我们可以通过以下步骤来实现这样的别名设置:

新增一个账号peter;然后用vi、或者Kate等文本编辑器打开/etc/aliases,在里面加上两行:

dearpeter: peter

truepeter: peter

保存该/etc/aliases退出。

不过,就这样还不能让Sendmail接受新增的别名,我们必须在终端命令窗口运行newaliases命令,以要求Sendmail重新读取/etc/aliases文件。如果一切无误,应该可以看到类似以下的回应消息:

[root@ahpeng root]# newaliases

/etc/aliases: 63 aliases, longest 10 bytes, 625 bytes total

这样,发给peter的邮件可以使用3个邮件地址,而peter只需要使用一个电子邮件账号peter@YourDomain就可以接收所有寄给以上3个地址的电子邮件。

指定邮箱容量限制

当一个邮件服务器为许多人提供邮件服务时,无 *** 的电子邮件将很容易塞满服务器的硬盘,造成硬盘负担。如果不想为用户提供无限空间的邮件暂存空间,可以使用"邮件限额"来给用户一个有限的暂存空间。

其实,它是利用磁盘配额功能来实现的。电子邮件的暂存空间是在/var/spool/mail目录下,只要通过磁盘配额设定每一个用户在这个目录下能使用的最大空间即可。

支持POP和IMAP功能

到现在为止,我们已经可以用Outlook Express发送邮件,或者登录服务器使用mail、pine命令收取、管理邮件。但是还不能用Outlook Express等客户端从服务器下载邮件,这是因为Sendmail并不具备POP3(IMAP)的功能,所以我们必须自己安装。

(1)POP和IMAP服务器安装

安装Red Hat Linux 9.0时,可以选择安装POP和IMAP服务器,可以在终端命令窗口运行以下命令进行验证:

[root@ahpeng root]# rpm -qa imap

imap-2001a-18

如果没有安装,可以将第2张安装光盘放进光驱,然后在终端命令窗口运行以下命令即可开始安装:

[root@ahpeng root]#cd /mnt/cdrom/RedHat/RPMS

[root@ahpeng root]#rpm -ivh imap-2001a-18.i386.rpm

由于Red Hat Linux 9.0已经将POP和IMAP打包成一个单独的套件,安装好imap-2001a-18.i386.rpm,就会同时安装这两个服务器

(2)启动POP和IMAP服务

要成功启动POP和IMAP服务器,首先要确定这些服务存在于/etc/services文件,确保以下的服务前面没有加上#注释(如果有,必须去除注释)。

imap 143/tcp imap2 # Interim Mail Access Proto v2

imap 143/udp imap2

pop2 109/tcp pop-2 postoffice # POP version 2

pop2 109/udp pop-2

pop3 110/tcp pop-3 # POP version 3

pop3 110/udp pop-3

修改好/etc/services文件,接下来就要对相应服务配置文件进行定制:

启动POP3服务:必须修改/etc/xid.d/ipop3文件,将其中的"disable=yes"改为"disable=no",保存该文件。最后必须重新启动xid程序来读取新的配置文件,使得设定内容生效:

[root@ahpeng root]#/etc/rc.d/init.d/xid reload

启动IMAP服务:必须修改/etc/xid.d/imap文件,将其中的"disable = yes"改为"disable =no",保存该文件。最后必须重新启动xid程序来读取新的配置文件,使得设定内容生效:

[root@ahpeng root]#/etc/rc.d/init.d/xid reload

设置好以后,就可以在Outlook Express里面设置好邮件账号,以后就可以直接利用Sendmail服务器进行收发邮件了,由于邮件服务器就在本地局域网,所以速度很快。

1、用的腾讯云服务器,折腾了很多资料,发现改错了。谨记检查端口25开放

2、TP框架用PHPMailer 发送邮件,windows本地测试正常,上传到腾讯云linux服务器就发送不成功:

细节如下: [root@VM_82_192_centos ~]# tail -40 /var/log/maillog

把class.phpmailer.php中的$this->mailer = smtp中的smtp换成大写:SMTP。说是因为qq 163等邮箱需要接受发送过来的大写的SMTP

发现还是不成功

反过头来检查25端口:

发现没反应:yum重装sendmail,还是同样。直接杀到云服务器哪儿,检查25端口是否开放;泪流满面:赶紧解封。

确认:

OK,测试发送 mail -s '33333333555ksTest mail' 2848278204@qq.com </etc/passwd

假定你想配置一个 Linux 应用,用于从你的服务器或桌面客户端发送邮件信息。邮件信息可能是邮件简报、状态更新(如 Cachet)、监控警报(如 Monit)、磁盘时间(如 RAID mdadm)等等。当你要建立自己的 邮件发送服务器 传递信息时 ,你可以替代使用一个免费的公共 SMTP 服务器,从而避免遭受维护之苦。

谷歌的 Gmail 服务就是最可靠的 免费 SMTP 服务器 之一。想要从应用中发送邮件通知,你仅需在应用中添加 Gmail 的 SMTP 服务器地址和你的身份凭证即可。

使用 Gmail 的 SMTP

服务器会遇到一些限制,这些限制主要用于阻止那些经常滥用服务器来发送垃圾邮件和使用邮件营销的家伙。举个例子,你一次只能给至多 100

个地址发送信息,并且一天不能超过 500

个收件人。同样,如果你不想被标为垃圾邮件发送者,你就不能发送过多的不可投递的邮件。当你达到任何一个限制,你的 Gmail

账户将被暂时的锁定一天。简而言之,Gmail 的 SMTP 服务器对于你个人的使用是非常棒的,但不适合商业的批量邮件。

说了这么多,是时候向你们展示 如何在 Linux 环境下使用 Gmail 的 SMTP 服务器 了。

Google Gmail SMTP 服务器设置

如果你想要通过你的应用使用 Gmail 的 SMTP 服务器发送邮件,请牢记接下来的详细说明。

邮件发送服务器 (SMTP 服务器): smtp.gmail.com

使用认证: 是

使用安全连接: 是

用户名: 你的 Gmail 账户 ID (比如 "alice" ,如果你的邮箱为 alice@gmail.com)

密码: 你的 Gmail 密码

端口: 587

确切的配置根据应用会有所不同。在本教程的剩余部分,我将向你展示一些在 Linux 上使用 Gmail SMTP 服务器的应用示例。

从命令行发送邮件

作为第一个例子,让我们尝试最基本的邮件功能:使用 Gmail SMTP 服务器从命令行发送一封邮件。为此,我将使用一个称为 mutt 的命令行邮件客户端。

先安装 mutt:

对于 Debian-based 系统:

$ sudo apt-get install mutt

对于 Red Hat based 系统:

$ sudo yum install mutt

创建一个 mutt 配置文件(~/.muttrc),并和下面一样,在文件中指定 Gmail SMTP 服务器信息。将 替换成自己的 Gmail ID。注意该配置只是为了发送邮件而已(而非接收邮件)。

$ vi ~/.muttrc

set from = "@gmail.com"set realname = "Dan Nanni"set smtp_url = "smtp://@smtp.gmail.com:587/"set smtp_pass = ""

一切就绪,使用 mutt 发送一封邮件:

$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com

想在一封邮件中添加附件,使用 "-a" 选项

$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com -a ~/test_attachment.jpg

使用 Gmail SMTP 服务器意味着邮件将显示是从你 Gmail 账户发出的。换句话说,收件人将视你的 Gmail 地址为发件人地址。如果你想要使用自己的域名作为邮件发送方,你需要使用 Gmail SMTP 转发服务。

当服务器重启时发送邮件通知

如果你在 虚拟专用服务器(VPS)

上跑了些重要的网站,建议监控 VPS 的重启行为。作为一个更为实用的例子,让我们研究如何在你的 VPS

上为每一次重启事件建立邮件通知。这里假设你的 VPS 上使用的是 systemd,并向你展示如何为自动邮件通知创建一个自定义的 systemd

启动服务。

首先创建下面的脚本 reboot_notify.sh,用于负责邮件通知。

$ sudo vi /usr/local/bin/reboot_notify.sh

#!/bin/sh

echo "`hostname` was rebooted on `date`" | mutt -F /etc/muttrc -s "Notification on `hostname`" alice@yahoo.com

$ sudo chmod +x /usr/local/bin/reboot_notify.sh

在这个脚本中,我使用 "-F" 选项,用于指定系统级的 mutt 配置文件位置。因此不要忘了创建 /etc/muttrc 文件,并如前面描述的那样填入 Gmail SMTP 信息。

现在让我们创建如下一个自定义的 systemd 服务。

$ sudo mkdir -p /usr/local/lib/systemd/system$ sudo vi /usr/local/lib/systemd/system/reboot-task.service

[Unit]

Description=Send a notification email when the server gets rebooted

DefaultDependencies=no

Before=reboot.target

[Service]

Type=oneshot

ExecStart=/usr/local/bin/reboot_notify.sh

[Install]

WantedBy=reboot.target

在创建服务后,添加并启动该服务。

$ sudo systemctl enable reboot-task$ sudo systemctl start reboot-task

从现在起,在每次 VPS 重启时,你将会收到一封通知邮件。

通过服务器使用监控发送邮件通知

作为最后一个例子,让我展示一个现实生活中的应用程序,Monit,这是一款极其有用的服务器监控应用程序。它带有全面的 VPS 监控能力(比如 CPU、内存、进程、文件系统)和邮件通知功能。

如果你想要接收 VPS 上由 Monit 产生的任何事件的邮件通知,你可以在 Monit 配置文件中添加以下 SMTP 信息。

set mailserver smtp.gmail.com port 587

username "" password ""

using tlsv12

set mail-format {

from: @gmail.com

subject: $SERVICE $EVENT at $DATE on $HOST

message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.

Yours sincerely,

Monit

}

# the person who will receive notification emails

set alert alice@yahoo.com

这是一个因为 CPU 负载超载而由 Monit 发送的邮件通知的例子。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8941405.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存