GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>系统问题 > linux系统下邮件服务器sendmail的配置

linux系统下邮件服务器sendmail的配置

来源:Ghost系统之家浏览:时间:2023-04-11 12:36:35
所需软件

sendmail.8.12.10.tar.gz   http://www.sendmail.org/
cyrus-sasl-2.1.18.tar.gz  http://asg.web.cmu.edu/cyrus/
步骤
1、        先cyrus-sasl-2.1.18.tar.gz,sendmail时要用到sasl(简单认证和安全层协议)的库文档的头文档。
解压缩:

tar -zxvf cyrus-sasl-2.1.18.tar.gz

编译:
进入刚解压的源码目录,运行以下命令完成。

./configure --prefix=/usr/local/sasl2 --enable-login

一定要加--enable-login,因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过
login来进行SMTP验证的。

make           # 编译

make install        #

完成以上linux程式三步曲之后,就能够开始配置和测试了。
2、配置SASL
为了把SASL应用于sendmail认证,还需进行一些配置工作。sendmail会到/usr/lib目录下去
找SASL2库,而我们是把程式在/usr/local/sasl2中,为什么不把软件在/usr/lib目录
呢?这主要是为了好管理自已的软件啦。所以我们要在/usr/lib目录下做一个链接:

cd /usr/lib

ln -s /usr/local/sasl2/lib/* .

ok,接着要在/var/目录下建一个目录给saslauthd进程存在临时数据。

cd /var

mkdir state

cd state

mkdir saslauthd

注:假如没有这些目录,运行saslauthd时,会提示出错。
ok,接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一
个SASL的配置文档来把MTA程式定义成一个SASL应用。配置文档名为Sendmail.conf(注
意是大写的S),位于/usr/lib/sasl2目录中,也就是/usr/local/sasl2/lib/sasl2这个目录,记得上
面新建的链接了吗?在该文档中您定义您希望使用的认证数据库,以下这个例子使用
saslauthd来验证认证请求。

cd /usr/lib/sasl2

echo 'pwcheck_method: saslauthd' >;Sendmail.conf

3、测试
ok,现在能够运行saslauthd了,并进行测试。

cd /usr/local/sasl2/sbin

./saslauthd -a shadow               

用shadow的用户和密码进行验证

./testsaslauthd -u userid -p password

0: OK "Success."
假如出现以上信息,就说明saslauthd正常运行了。testsaslauthd程式默认是没有编译的,您
需要在源码目录树的saslauthd子目录中运行     # make testsaslauthd命令生成。
4、sasl2安装完成后,就要开始sendmail了。
先解压sendmail源码。

tar -zxvf sendmail.8.12.10.tar.gz

假如要sendmail支持SASL,需要修改源码的位置配置文档site.config.m4。site.config.m4位
于源码目录树的devtools/Site。文档中应包含以下行:
PREPENDDEF(confMAPDEF',-DMAP_REGEX')
APPENDDEF(confENVDEF',-DTCPWRAPPERS -DSASL=2')
APPENDDEF(conf_sendmail_LIBS',-lwrap -lsasl2')
APPENDDEF(confLIBDIRS',-L/usr/local/sasl2/lib')
APPENDDEF(confINCDIRS',-I/usr/local/sasl2/include')
第一行配置正则表达式相关内容
第二、三行配置表示在sendmail程式中支持sasl2和tcp_wrapper(可通过hosts.allow和
hosts.deny控制访问)
第四、五行配置指出sasl2的库文档和头文档的位置。
ok,接着在编译前要建立一些用户和目录,并确保有正确的权限。
sendmail必须有一个set-group-id(默认是smmsp组)的程式来在一个组可写的目录中查询
排队邮件。所以我们要建立一个smmsp用户和组。并建立如下目录并配置相应的权限,具
体配置需要可查询源码目录树下sendmail/SECURITY文档。

groupadd smmsp

useradd smmsp -d /var/spool/clientmqueue -s /dev/null

mkdir /var/spool/clientmqueue

chown -R smmsp:smmsp /var/spool/clientmqueue  

chmod -R 770 /var/spool/clientmqueue  

mkdir /etc/mail

mkdir /var/spool/mqueue

chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

ok,接下来就能够进入源码目录树开始编译了。

./Build -c

-c选项能删除上次编译产生的文档。

./Build install

编译完成后就能够进行。
5、sendmail配置
sendmail正常运行,还需配置几个文档,首先最重要的就是sendmail.cf 文档了。他在源
码目录树下的cf/cf目录下有很多例子可参考。您能够拷贝使用。由于sendmail.cf中的语法
很复杂,所以不建议手工修改。我们能够以sendmail.mc文档配合sendmail-cf目录下的宏通
过m4预处理器自动生成。m4预处理器用来从一组宏文档中创建sendmail配置文档。宏文
件作为输入被读进来。宏被展开,然后写到一个输出文档。sendmail-cf目录一般放在/usr/share
目录下。其实sendmail-cf目录的内容和源码目录树下的cf目录的内容是相同的,所以,为
了确保sendmail-cf目录的内容和版本同步,要把源码目录树下的cf目录的内容拷贝到
/usr/share/sendmail-cf目录。
sendmail.mc配置文档内容如下:
divert(-1)
include(/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(linux setup for Red Hat Linux')dnl
OSTYPE(linux')
dnl Uncomment and edit the following line if your mail needs to be sent out
dnl through an external mail server:
dnl define(SMART_HOST',smtp.your.provider')
define(confDEF_USER_ID',`8:12'')dnl
undefine(UUCP_RELAY')dnl
undefine(BITNET_RELAY')dnl
dnl define(confAUTO_REBUILD')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/mail/aliases')dnl
define(STATUS_FILE',/etc/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
define(confAUTH_OPTIONS',A')dnl
TRUST_AUTH_MECH(EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl               
define(confAUTH_MECHANISMS', EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl
dnl define(confCACERT_PATH',/usr/share/ssl/certs')
dnl define(confCACERT',/usr/share/ssl/certs/ca-bundle.crt')
dnl define(confSERVER_CERT',/usr/share/ssl/certs/sendmail.pem')
dnl define(confSERVER_KEY',/usr/share/ssl/certs/sendmail.pem')
dnl define(confTO_QUEUEWARN', 4h')dnl
dnl define(confTO_QUEUERETURN', 5d')dnl
dnl define(confQUEUE_LA', 12')dnl
dnl define(confREFUSE_LA', 18')dnl
define(confTO_IDENT', 0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(no_default_msa',dnl')dnl
FEATURE(smrsh',/usr/sbin/smrsh')dnl
FEATURE(mailertable',hash -o /etc/mail/mailertable.db')dnl
FEATURE(virtusertable',hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl The '-t' option will retry delivery if e.g. the user runs over his quota.
FEATURE(local_procmail,',procmail -t -Y -a $h -d $u')dnl
FEATURE(access_db',hash -T; -o /etc/mail/access.db')dnl
FEATURE(blacklist_recipients')dnl
EXPOSED_USER(root')dnl
dnl This changes sendmail to only listen on the loopback device 127.0.0.1
dnl and not on any other network devices. Comment this out if you want
dnl to accept email over the network.
DAEMON_OPTIONS(Port=smtp,Addr=0.0.0.0, Name=MTA')
dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires
dnl       a kernel patch
dnl DAEMON_OPTIONS(port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')
dnl We strongly recommend to comment this one out if you want to protect
dnl yourself from spam. However, the laptop and users on computers that do
dnl not have 24x7 DNS do need this.
FEATURE(accept_unresolvable_domains')dnl
dnl FEATURE(relay_based_on_MX')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
记得要使以下两个条语句有效,他的意思是假如access.db访问控制没有配置,则启用以下
验证方式进行smtp验证。
TRUST_AUTH_MECH(EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl               
define(confAUTH_MECHANISMS',EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl
sendmail宏定义说明
divert(n)                为m4定义一个缓冲动作,当n=-1时缓冲被删除,n=0时开始一个新缓冲
OSTYPE                        定义宏所使用的,该宏允许m4程式增加同相关相关的
文档
Domain                        定义MTA将使用哪些域来传输邮件
Feature                        定义配置文档中使用的一个特定的功能集
Define                        定义配置文档中的一个特定的选项值
MASQUERADE_AS                定义sendmail来应答邮件的其他主机名
MAILER                        定义sendmail使用的邮件传输
dnl                        注释
完成sendmail.mc文档的编写后就能够用m4程式生成正式的sendmail.cf配置文档。语法如
下:

m4sendmail.mc >;sendmail.cf

也能够用源码目录树下的cf/cf/Build命令生成。前提是您要在该目录下有一个sendmail.mc
文档。语法如下:

./Buildsendmail.cf

ok,接着就能够把sendmail.cf and submit.cf文档到/etc/mail目录中的,语法如下:

./Build install-cf

其实也能够自已用cp命令拷贝的啦。记得把sendmail.mc文档也拷贝一份到/etc/mail目录,
以便以后修改配置时可重新生成sendmail.cf文档。
ok,接着到/etc/mail目录下配置一些文档。

cd /etc/mail

echo 'examply.com' >;>; local-host-names         接收邮件的主机名

echo 'localhost    RELAY'  >;>; access                 用来拒绝或允许来自某个域的邮件,本例允许

本地转发。

makemap hash access 生成access.db数据库

touch domaintable                                 用来把旧域名映射互新域名

makemap hash domaintable 来覆盖向指定域的路由

makemap hash mailertable 用来把用户和域名映射到其他地址

makemap hash virtusertable 别名数据库,文本形式。可参照源码目录树下

sendmail/aliases文档。

newaliases                                          从文本文档中创建一个新的别名数据库文档。

sendmail -v -bi                                调试启动。

/etc/mail/aliases: 42 aliases, longest 10 bytes, 432 bytes total
假如出现以上提示信息,则启动成功。可用以下命令正式启动:

sendmail -bd -q30m

该命令以后台进程方式(-bd)运行,并使其每隔30分钟(-q30m)轮询一次未发送邮件队
列,检查是否有新邮件。
器启动后,能够用telnet连接器。

telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 test.tigerhead ESMTP Sendmail 8.12.10/8.12.10; Tue, 30 Mar 2004 14:50:14 +0800
ehlo test                您输入的命令,按回车结束。
250-test.tigerhead Hello LOCALHOST.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
以250-开头的为器的响应信息。注意倒数第三行,这就是成功配置smtp验证的显示。
输入quit离开。
完成后为确保安全,还需调整一些目录的权限。可参考sendmail源码目录下
sendmail/SECURITY文档。

chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir}

chmod 0640 /etc/mail/*.{db,pag,dir}

chmod 0640 /etc/mail/statistics /var/log/sendmail.st

chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid

-r-xr-sr-x        root   smmsp        ... /PATH/TO/sendmail
drwxrwx---        smmsp  smmsp        ... /var/spool/clientmqueue
drwx------        root   wheel        ... /var/spool/mqueue
-r--r--r--        root   wheel        ... /etc/mail/sendmail.cf
-r--r--r--        root   wheel        ... /etc/mail/submit.cf
6、sendmail功能介绍
aliases 别名数据库配置
test:        test1,test2,test3        配置test群组别名,test不是个实际的用户,只是个别名。发给
test的信,test1,2,3都可收到。
test:        test,testbak                在testbak邮箱中备份test的邮件。
test:        test,test@163.com        远程邮件备份,原理同上。
test:   :include: /etc/mail/userlist        使用用户列表配置群组。
userlist格式如下:
test1, \
test2, \
test3, \
test4
关于预设aliases,由于sendmail预设用mailer-daemon and postmaster作为资料传送者,
或邮件退回的帐号,但实际没有这两个帐号,所以要如下配置别名。
mailer-daemon:  postmaster
postmaster:     root
配置完成后不要忘了用newaliases命令生成数据库。
~/.forward文档配置
其实该文档的作用和aliases数据库的作差不多啦,都是配置别名,做邮件转发的。因为alises
只能由管理员控制,个人用户不能修改,所以就能够在个人的目录下建立一个转寄文档。以
配置个人的邮件转寄列表。文档格式如下:
test
test1
test2
test3
and os on
但由于个人用户安全意识差,假如配置不当会有安全漏洞,不建议使用。
access访问控制列表配置
92.168 RELAY
test.NET        OK
test.COM REJECT
test.COM        550 SORRY,WE DON'T ALLOW SPAMMERS HERE
test.ORG        DISCARD
Ok--远程主机能够向您的邮件器发送邮件;
RELAY--允许中转;
REJECT--不能向您的邮件器发邮件和不能中转;
DISCARD--发来的邮件将被丢弃,同时并不向发送者返回错误信息。
nnn text-- 发来的邮件将被丢弃,但sendmail将会向发送者返回nnn确定的smtp代码和text
变量确定的文本描述。
配置完成后要用makemap hash access.db 命令生成数据库。
mailq邮件队列查询命令。
Q-ID                        邮件id号。
Size                        邮件容量。
Q-Time                        邮件进入队列(也就是/var/spool/mqueue目录)的时间和不能邮寄的原因。
Sender/Recipient        发信和收信人的邮箱地址。
mailstats邮寄状态查询命令,可查询sendmail运行作至今邮件收发总计资料。
M     :
msgsfr:发送的邮件数量。
bytes_from:邮件容量
megsto:收到邮件的数量。
bytes_to:同上
msgsrej:邮件deny的次数。
msgsdis:邮件discard的次数。
Mailer :esmtp对外邮件 ,local本地邮件 。
mail邮件命令
mail                                查看/var/spool/mail/目录下自已邮箱内容。以q退出把看过的邮件保存在
~/mbox中。
mail test@example.com                直接发邮件给人。
mail -s 'title text' test@example.com 把文档中内容邮寄出去。
mail -f ~/mbox                        查看home目录下邮箱内容。
用mail发附件也是可行,要用到uuencode and uudecode命令进行编码。
编码:uuencode [file] name          example:uuencode hello hello>;hello.uue   default input
is stdin;default output is stdout.
解码:uudecode [-o outfile] name    example:uudecode hello.uue 能够用-o选项输出另外一个
文档名。

uuencode ~/.bashrc bashrc | mail -s 'test uuencode'

test@example.com
五、其他配置。
要想更好的使用sendmail,常用到的一些配置:
1、限制最大邮件。
vi /etc/sendmail.cf

maximum message size

O MaxMessageSize=5000000    (注:5M)
2、最大的群发数目。
vi /etc/sendmail.cf

maximum number of recipients per SMTP envelope

O MaxRecipientsPerMessage=20  (注:20个)
3、域名文档----local-host-name
能够用他来实现虚拟域名或多域名支持。
/etc/mail/local-host-name
v1mail.com
v2mail.com
.......
4、mail别名文档--aliases。
vi /etc/aliases
内部别名:peng:zpeng,hero,mmmn,yt   peng是我的用户名,其他的是别名,用逗号隔开。
转发到其他的邮箱:peng:zpeng@sina.com,yt.sohu.com

newaliases   --写到库中

5、邮件控制文档--access
relay、ok、reject和discard。relay能够实现转发。ok是用来允许用户的任意访问,他会覆盖任何其他已建立的检查(实际配置中,最好别设这项,除非您对该用户是绝对信任的);reject能够实现对来访地址的拒绝,他根本就不容许该地址和您的邮件器进行连接通信;discard的作用是在接收到传输的邮件消息后,偷偷地把他丢弃掉(在发送者看来,他的邮件的确是接收了,但他并不知道,发送的目的地址根本不可能接收到他的邮件,器巧妙地欺骗了他。
vi /etc/mail/access.
localhost.localdomain    RELAY      ---允许
localhost                        RELAY
127.0.0.1                       RELAY
peng@sina.com              ok
@sexgirl.net                   reject
211.77.22.45                  discard

makemap hash access.db 写入库中

6、虚拟用户文档---virtusertable.
这个文档能够mail重名问题。
例如:您有两个域名,virt1.com and virt2.com,但是都有peng这个用户:
peng@virt1.com and peng@virt2.com,这是两个用户。但对于用户来说,他只认用户peng,只能通过一下改:
vi /etc/mail/virtusertable
peng@virt2.com   r010
这样就能够了。在新开一个用户r010,但是peng@virt2.com在客户端的pop3 and smtp server的用户名和口令要用r010的。

makemap hask virtusertable.db

/usr/sbin/sendmail -d0.1 -bv root |grep SASL

NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS QUEUE SASL SCANF
我的问题已找到了是/usr/lib/sasl/Sendmail.conf的文档名中的S没有大写,问题已
 

标签:

推荐系统

  • 微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    语言:中文版系统大小:5.13GB系统类型:Win11

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化  1、保留 Edge浏览器。  2、隐藏“操作中心”托盘图标。  3、保留常用组件(微软商店,计算器,图片查看器等)。  5、关闭天气资讯。 

  • Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    语言:中文版系统大小:4.75GB系统类型:Win11

    Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户

  • 番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    语言:中文版系统大小:3.91GB系统类型:Win7

    欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统