centos mail 配置(centos设置ip地址)

CentOS下邮件服务sendmail的安装及简单配置

sendmail是Linux下优秀的邮件系统。在不做任何设定的情况下,sendmail发出邮件的邮箱源地址形如userid@localhost.localdo,这种地址几乎会被所有的邮箱认定为SPAM(垃圾邮件)或直接拒收。

1、 Sendmail安装

在CentOS下,sendmail一般默认是随操作系统一起安装的。如果安装系统时没有安装sendmail服务,手动安装sendmail也很简单:

复制代码代码如下:

# yum install-y sendmail

# yum install-y sendmail-cf

2、 Senmail的SMTP认证配置(不需要认证的可忽略此步)

首先确认saslauthd服务是否安装或启动。

安装saslauthd服务:

复制代码代码如下:# yum install-y saslauthd

启动saslauthd服务:

复制代码代码如下:# service saslauthd start

(1)配置Senmail的SMTP认证

复制代码代码如下:

# vi/etc/mail/sendmail.mc

复制代码代码如下:

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

将上面两行的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。

(2)设置Sendmail服务的网络访问权限

复制代码代码如下:

# vi/etc/mail/sendmail.mc

复制代码代码如下:

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

将127.0.0.1改为0.0.0.0,意思是任何主机都可以访问Sendmail服务。如果仅让某一个网段能够访问到Sendmail服务,将127.0.0.1改为形如192.168.1.0/24的一个特定网段地址。

3、生成Sendmail配置文件

Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。如果系统无法识别m4命令,说明sendmail-cf软件包没有安装。

生成Sendmail的配置文件:

复制代码代码如下:

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

需要重启Sendmail才能使配置文件生效。

4、postfix与sendmail的冲突问题

在Linux服务器(CentOS release 6.6)上配置好了sendmail后,测试发送邮件时发现有问题,检查sendmail服务的状态,发现其处于“sendmail dead but subsys locked”,检查发现postfix服务也在运行。只需要将postfix服务停掉即可。为什么会出现这种情况呢?Something was occasionally causing the postfix service to start which then caused the status of sendmail to jump to dead but subsys locked.两种似乎不兼容。

操作步骤:

(1):检查sendmail服务的状态

复制代码代码如下:

[root@DB-Server~]# service sendmail statussendmail dead but subsys lockedsm-client(pid 22112) is running...

(2):检查postfix服务的状态

复制代码代码如下:

[root@DB-Server~]# service postfix statusmaster(pid 1777) is running...

(3):停止postfix服务

复制代码代码如下:

[root@DB-Server~]# service postfix stopShutting down postfix: [ OK ]

(4):重新启动sendmail服务

复制代码代码如下:

[root@DB-Server~]# service sendmail stopShutting down sm-client: [ OK ]Shutting down sendmail: [FAILED][root@DB-Server~]# service sendmail stop[root@DB-Server~]# service sendmail startStarting sendmail: [ OK ]Starting sm-client: [ OK ]

(5):禁用postfix在reboot后自动启动

检查一下是否有设定 postfix在 reboot后自动启动

复制代码代码如下:

chkconfig--list| grep postfix

chkconfig postfix off

CentOS系统管理_用户和用户组的详解

一:新建用户和用户组:useradd和groupadd

1,useradd的参数:

-u:指定UID标记号

-d:指定宿主目录,缺省为/home/用户名

-e:指定账号失效时间(下面usermod也有此选项)

-g:指定所属的基本组(组名或GID)

-G:指定所属的附加组(组名或GID)

-M:不为用户建立并初始化宿主目录、

-s:指定用户的登录shell(默认为/bin/bash,一般不用改,在建立非登录用户的时候可以指定

为/sbin/nologin)

注:这些参数都能分开用,不冲突的可以在建立用户的时候连着用。

示例1:添加用户stu01,指定UID为520,宿主目录为/public/stu01,指定基本组为users(注:系统中本身就

存在users这个组GID为100),附加组为tech:

[root@localhost~]#useradd-u520-d/public/stu04-gusers-Gtechstu01

[root@localhost~]#idstu01

uid=520(stu01)gid=100(users)groups=100(users),200(tech)

示例2:添加用户stu02,不为用户建立宿主目录:

[root@localhost~]#useradd-M-s/sbin/nologinstu02//创建一个非登录用户stu02

[root@localhost~]#cat/etc/passwd|grepstu02

stu02:x:1001:1001::/home/stu02:/sbin/nologin//-s参数指定bashshell

2,groupadd的参数:

gourpadd[-gGID]组名

-g参数指定了新建用户组的GID

[root@localhost~]#groupadd-g600stu//添加一个组stu,指定其GID为600

[root@localhost~]#cat/etc/group|grepstu//查看stu组的信息

stu:x:600:

二:删除用户和用户组

1,userdel

-格式:userdel[-r]用户名

添加-r选项,宿主目录/用户邮件也一并删除

示例:

[root@localhost~]#useradduser1;useradduser2//添加用户user1和user2

[root@localhost~]#ll-d/home/user1//var/mail/user1/home/user2//var/mail/user2//查看user1、user2的宿主目录和邮件文件是否存在

drwx------3user1user1409602-1809:53/home/user1/

drwx------3user2user2409602-1809:53/home/user2/

-rw-rw----1user1mail002-1809:53/var/mail/user1

-rw-rw----1user2mail002-1809:53/var/mail/user2

[root@localhost~]#userdeluser1;userdel-ruser2//加不加-r的区别

[root@localhost~]#ll-d/home/user1//var/mail/user1/home/user2//var/mail/user2

ls:/home/user2/:没有那个文件或目录//加-r之后删除宿主目录

ls:/var/mail/user2:没有那个文件或目录//加-r之后删除邮件文件

drwx------310021002409602-1809:53/home/user1/

-rw-rw----11002mail002-1809:53/var/mail/user1

[root@localhost~]#

2,groupdel:删除用户组

-格式:groupdel组名

-删除的目标组不能是用户的基本组。

-在删除用户组的时候,如果该组为某个成员的私有组,则无法删除,必须先删除组里面的成员,才能成功删除该组。

[root@localhost~]#iduser1//查看user1的基本组和附加组

uid=1002(user1)gid=1002(user1)groups=1002(user1),600(stu)

[root@localhost~]#grepstu/etc/group

stu:x:600:user1,user2

上面的操作可以看到,user1的基本组为user1,附加组为stu,那么现在只能删除stu,而不能直接删除组user1,因为user1组是一个基本组,要想删除user1,必须先删除user1用户,再删除user1组,而stu组不是一个基本组,只是user1和user2的附加组,所以可以直接删除。

[root@localhost~]#groupdeluser1//尝试删除user1用户组,因为user1组为user1的基本组,所以需要先删除user1用户,才能删除user1组。

groupdel:不能删除用户的主组。

[root@localhost~]#groupdelstu

[root@localhost~]#grepstu/etc/group//删除stu组之后,不能看到/etc/group文件里面的stu组的信息了。

三:为用户和用户组添加密码

1,为用户添加密码:

Passwd命令:

选项有:

-d:清空用户的密码,使之无需密码即可登录

-l:锁定用户账号

-S:查看用户账号的状态(是否被锁定)

-u:解锁用户账号

--stdin:标准输入(比如管道)取密码

注:删除密码用passwdd而不能用echo|passwd--stdin用户名

示例:

[root@localhosthome]#cat/etc/shadow|grepuser3//查看user3是否有密码

user3:$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhosthome]#passwd-duser3//使用-d选项删除密码

Removingpasswordforuseruser3.

passwd:Success

[root@localhosthome]#cat/etc/shadow|grepuser3//再次查看,密码取消

user3::16119:0:99999:7:::

[root@localhosthome]#

示例:

如果修改一个用户的密码,可以直接输入passwd用户名,然后进入交互式的密码输入去人,使用--stdin使用非交互式设置密码,直接将密码导入。

[root@localhost/]#echo123|passwd--stdinuser3//设置user3的密码为123,使用--stdin为面交互式导入密码

Changingpasswordforuseruser3.

passwd:allauthenticationtokensupdatedsuccessfully.

[root@localhost/]#passwd-luser3//锁定user3账户

Lockingpasswordforuseruser3.

passwd:Success

[root@localhost/]#grepuser3/etc/shadow//查看锁定账户密码信息,有两个!

user3:!!$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhost/]#passwd-Suser3//用-S查看是否被锁定

user3LK2014-02-180999997-1(Passwordlocked.)

[root@localhost/]#passwd-uuser3//-u参数为解锁

Unlockingpasswordforuseruser3.

passwd:Success.

[root@localhost/]#grepuser3/etc/shadow//解锁之后,该账户密码段没有!

user3:$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhost/]#

2,用户组的密码gpasswd

gpasswd组名:进入交互式的密码输入确认。

gpasswdr组名:-r选项为移除密码,gpasswdr组名为清空该组密码

组密码的用途:主要是一些用户想要加入组,那么需要用到的这个组账户的密码,而这个用户加入的时候也是临时加入的,用exit即可退出该组。

四:用户组成员的添加和删除

1,gpasswd在用户组中的应用

-A:定义组管理员列表(可以在/etc/gshadow文件里查看组管理员和组成员)

-a:添加组成员,每次只能加一个

-d:删除组成员,每次只能删一个

-M:定义组成员列表,可设置多个(为覆盖操作,在定义之后,之前组内用户将被删除;注意在写多个成员列表的时候,用逗号隔开)

示例:

[root@localhost~]#grepuser/etc/gshadow

user:!::

[root@localhost~]#gpasswd-auser1user//将账户user1加入到user组中

正在将用户user1加入到user组中

[root@localhost~]#gpasswd-auser2user//将user2加入到user组中

正在将用户user2加入到user组中

[root@localhost~]#grepuser/etc/gshadow|tail-1//查看user用户组的成员

user:!::user1,user2

[root@localhost~]#gpasswd-Mstu01,stu02user//-M参数覆盖添加多个用户

[root@localhost~]#cat/etc/gshadow|tail-1//再次查看,user1和user2被覆盖

user:!::stu01,stu02

[root@localhost~]#gpasswd-dstu01user//将stu01从user组中删除

正在将用户stu01从user组中删除

[root@localhost~]#cat/etc/gshadow|tail-1

user:!::stu02//删除后只剩下stu02用户

[root@localhost~]#gpasswd-Astu02user//将stu02设置为管理员

[root@localhost~]#grepuser/etc/gshadow|tail-1

user:!:stu02:stu02//gshadow文件中,第三个字段为该组的管理员账户,为stu02

[root@localhost~]#

2,usermod主要是对用户的属性进行更改,可以增加用户成员的所属附加组

只是用usermod的-a-G选项(-a表示添加,-G指定组,-a-G为新加一个附加组)

命令:usermod-a-G用户组用户名

[root@localhost~]#usermod-a-Gtechstu02//为stu02增加一个附加组tech

[root@localhost~]#idstu02

uid=501(stu02)gid=1201(nsd)groups=1201(nsd),200(tech),1204(user)

五:用户和组属性的查看和修改

1,usermod:主要针对用户与组之间属性的更改

格式:usermod[选项](选项可以有多个)用户名

-l:更改用户账号的登录名称

-L:锁定用户账户(注:用usermodL锁定一个账户的时候可以用passwdu直接解锁,但是用passwdl锁定的账户,用usermodU解锁的时间,需要解锁两次,因为,passwdl锁定的账户密码前面有两个!,而usermodL锁定的账号密码前面有一个!,可以通过查看/etc/gshadow文件里面的密码段来验证。)

-U:解锁用户账户

-u、-d、-e、-g、-G、-s:与useradd相同

-a:和-G搭配使用为添加该用户的附加组(只是用-G的时候,为修改附加组)

示例:

usermod-e20140630(或2014-06-30)user1:为修改user1账户失效时间为20140630

但是在用chage-E2014-06-30user1的时候,不能用20140630

[root@localhost~]#cat/etc/shadow|grepuser1

user1:!!:16119:0:99999:7:::

[root@localhost~]#usermod-e20140630user1//修改user1的账户失效时间

[root@localhost~]#cat/etc/shadow|grepuser1

user1:!!:16119:0:99999:7::16251:

[root@localhost~]#usermod-luser01user1//修改user1的登录名为user01

usermod:警告:/var/spool/mail/user1不属于user1

[root@localhost~]#

2,chage:主要针对用户的密码进行设定

-l:列出密码有效信息

-E:指定账户过期时间,YYYY-MM-DD

-I:指定当密码失效后多少天锁定账号

-m:指定密码的最小天数

-M:指定密码的最大天数

示例:

[root@localhost~]#chage-luser01//查看user01的密码信息

最近一次密码修改时间:2月18,2014

密码过期时间:从不

密码失效时间:从不

帐户过期时间:从不

两次改变密码之间相距的最小天数:0

两次改变密码之间相距的最大天数:99999

在密码过期之前警告的天数:7

[root@localhost~]#cat/etc/shadow|grepuser01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:0:99999:7:::

[root@localhost~]#chage-E2014-07-10user01//修改user01的账户过期时间

[root@localhost~]#chage-I3user01//修改user01用户的密码失效3天后锁定

[root@localhost~]#chage-m10user01//密码修改之后10天内不准修改

[root@localhost~]#chage-M40user01//密码修改后40天之后必须再次修改密码

[root@localhost~]#cat/etc/shadow|grepuser01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:10:40:7:3:16261:

[root@localhost~]#chage-luser01

最近一次密码修改时间:2月18,2014

密码过期时间:3月30,2014

密码失效时间:4月02,2014

帐户过期时间:7月10,2014

两次改变密码之间相距的最小天数:10

两次改变密码之间相距的最大天数:40

在密码过期之前警告的天数:7

[root@localhost~]#

3,id

-在命令行输入id,为查看该账户的用户名及用户所属组等信息;

[root@localhost~]#su-frank

[frank@localhost~]$id//id命令直接查看当前用户的ID和所属组

uid=507(frank)gid=507(frank)groups=507(frank)

-id用户名:表示查看该用户的相关信息

[root@localhost~]#idfrank//查看frank用户的用户ID和所属组

uid=507(frank)gid=507(frank)groups=507(frank)

[root@localhost~]#iduser01//查看user01的用户ID和所属组

uid=1005(user01)gid=1005(user1)groups=1005(user1)

[root@localhost~]#

-idgn:查看当前用户的所属组

[root@localhost~]#su-frank

[frank@localhost~]$id-gn//查看当前所属组,为frank组,下面修改一下

frank

[frank@localhost~]$exit

logout

[root@localhost~]#usermod-gtechfrank//将frank的基本组修改为tech

[root@localhost~]#su-frank

[frank@localhost~]$id-gn//用id-gn查看当前组

tech

[frank@localhost~]$

4,newgrp

newgrp用户组:为当前用户临时增加一个用户的附加组(可以用exit退出该附加组)

示例:

[root@localhost~]#su-frank

[frank@localhost~]$id

uid=507(frank)gid=200(tech)groups=200(tech)

[frank@localhost~]$newgrpuser

密码://这个密码为用gpasswd来设置的用户组密码,当有新用户加入是,需要输入,如果没有密码,直接确定即可加入

[frank@localhost~]$id-gn

user//用户组为user,未修改之前为tech

[frank@localhost~]$id

uid=507(frank)gid=1204(user)groups=200(tech),1204(user)

[frank@localhost~]$exit//只是临时增加的附加组,可以用exit退出该组

exit

[frank@localhost~]$id

uid=507(frank)gid=200(tech)groups=200(tech)

[frank@localhost~]$id-gn

tech//退出后的用户组还未之前的tech

[frank@localhost~]$

5,groups:查看用户所属组

groups:查看当前用户的所属组(包括基本组和附加组)

groups用户名:查看该用户所属组(包括基本组和附加组,前面的为基本组)

注:也可以查看/etc/group和/etc/gshadow文件的第四段。

[root@localhost~]#groups//查看当前用户的所属组

rootbindaemonsysadmdiskwheel

[root@localhost~]#groupsuser2//查看user2用户的所属组

user2:user2tech//那么user2用户的基本组为user2,有一个附加组,为tech

[root@localhost~]#

六,附:用户和用户组的密码及新建用户宿主目录里面的隐藏文件

1,用户的密码:/etc/passwd和/etc/shadow

/etc/passwd文件:保存了用户账号的基本信息

[root@localhost~]#head-1/etc/passwd

root:x:0:0:root:/root:/bin/bash

1234567

可以看到passwd里面的内容分为7个字段,分别用:隔开,每个字段的含义:

第一段:用户账号的名称

注:可使用user-luser1user01修改

第二段:密码字符或占位符

注:加密后的密码保存在/etc/shadow文件中

第三段:用户账号的UID号

注:在建立的时候用useradd-u来指定UID号

第四段:所属基本组的GID号

注:在新建用户的时候,如果不指定基本组,会默认新建一个和用户同名的组,可以使用useradd-gusers/100来指定新建用户组的GID

第五段:用户全名

第六段:宿主目录

注:在新建用户的时间,用useradd-d来指定

第七段:登录shell程序的路径

注:在新建用户时候使用useradd-s来指定,也可以在后来使用usermod-s来指定

/etc/shadow文件:保存了密码字串,有效期等信息

[root@localhost/]#head-1/etc/shadow

root:$1$SmlKPNho$qNqybQOGBSnK6iWmviI6b1:15908:0:99999:7:::

123456789

第一段:用户账号的名称

第二段:加密后的密码字符串

注:在使用passwd-l锁定之后加两个!,用usermod-L锁定之后该字符串前面加一个!

第三段:上次修改密码的时间

第四段:密码的最短有效天数,默认为0

注:也就是在上次修改密码后多少天之内不准修改密码,可以使用chage-m来修改

第五段:密码的最长有效天数

注:也就是说,密码在到达有效天数之后,必须进行修改,可以使用chage-M修改

第六段:密码过期后的警告天数,默认为7

注:在密码最长有效天数的前7天进行提醒

第七段:密码过期后多少天禁用此账户,默认值为空

注:如果密码过期之后,也就是密码最长有效时间到了之后,用户还可以继续使用该账号,如果还不修改密码,那么,这个时间将起作用,该用户将被禁用。可以使用chage-I来修改

第八段:账号失效时间,默认值为空

可以使用chage-E或者usermod-e来修改账号的失效时间

例如:

[root@localhosthome]#chage-luser01

最近一次密码修改时间:2月18,2014

密码过期时间:3月30,2014

密码失效时间:4月02,2014

帐户过期时间:7月10,2014

两次改变密码之间相距的最小天数:10

两次改变密码之间相距的最大天数:40

在密码过期之前警告的天数:7

[root@localhost~]#cat/etc/shadow|grepuser01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:10:40:7:3:16261:

[root@localhost~]#usermod-e20140810user01//或chage-E20140810user01

[root@localhost~]#cat/etc/shadow|grepuser01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:10:40:7:3:16292:

[root@localhost~]#chage-luser01

最近一次密码修改时间:2月18,2014

密码过期时间:3月30,2014

密码失效时间:4月02,2014

帐户过期时间:8月10,2014

两次改变密码之间相距的最小天数:10

两次改变密码之间相距的最大天数:40

在密码过期之前警告的天数:7

第九段:该字段保留

2,新建一个用户时候的默认配置/etc/login.defs、/etc/useradd和/etc/skel

[root@localhost~]#grep-vE^#|^$/etc/login.defs

MAIL_DIR/var/spool/mail//定义邮件文件路径

PASS_MAX_DAYS99999//定义密码最长有效天数,/etc/shadow第五段

PASS_MIN_DAYS0//密码最短有效天数为0,/etc/shadow的第四段

PASS_MIN_LEN5//密码最小长度为5,这里不起作用,有其他文件来规定

PASS_WARN_AGE7//密码过期后的警告天数

UID_MIN500//UID的起始值,/etc/passwd中的第三段

UID_MAX60000//UID的最大值,/etc/passwd中的第三段

GID_MIN500//GID的起始值,/etc/passwd中的第四段

GID_MAX60000//GID的最大值,/etc/passwd中的第四段

CREATE_HOMEyes//是否创建宿主目录

UMASK077//umask值为077

USERGROUPS_ENAByes//

MD5_CRYPT_ENAByes//密码使用MD5加密

ENCRYPT_METHODMD5//

[root@localhost~]#cat/etc/default/useradd

#useradddefaultsfile

GROUP=100//

HOME=/home//定义创建用户的宿主目录在/home下

INACTIVE=-1//是否启用该账户,-1代表是

EXPIRE=//

SHELL=/bin/bash//指定新建用户的shell为/bin/bash

SKEL=/etc/skel//新建用户的宿主目录模板为/etc/skel

CREATE_MAIL_SPOOL=yes//是否创建用户的邮件文件

[root@localhost~]#ll-a/etc/skel///在新建一个用户的时候,宿主目录里面的内容就是将skel拷贝过去,然后放到/home目录下并改名为新建的用户名

总计64

drwxr-xr-x3rootroot40962013-07-10.

drwxr-xr-x97rootroot1228802-1816:24..

-rw-r--r--1rootroot332011-05-13.bash_logout

-rw-r--r--1rootroot1762011-05-13.bash_profile

-rw-r--r--1rootroot1242011-05-13.bashrc

-rw-r--r--1rootroot5152011-04-07.emacs

drwxr-xr-x4rootroot40962012-11-16.mozilla

3,全局配置文件~/.bash_profile、~/.bashrc和~/.bash_logout

注:可以在用户的宿主目录下使用ls-a查看。

~/.bash_profile:每次登录时执行

~/.bashrc:每次进入新的Bash环境时执行

~/.bash_logout:每次推出登录时执行

4,查看用户组信息:/etc/group和/etc/gpasswd

/etc/group查看用户组的信息

[root@localhost~]#cat/etc/group|tail-1

user:x:1204:user01,user2

第一段:组名

第二段:密码占位符

第三段:GID

第四段:组内成员(使用gpasswd-a添加,gpasswd-d删除,gpasswd-M覆盖添加多个)

[root@localhost~]#cat/etc/gshadow|tail-1

user:$1$u/W2qj.L$W8GJY5HxyLzphdtgLKpxW0:stu02:user01,user2

第一段:组名

第二段:密码(使用gpasswd来设置)

第三段:组管理员(使用gpasswd-A指定)

第四段:组内成员

总结:

学的时间也不短了,总是想找个时间将用户组这一章好好的做下笔记,这下好了,终于弄完了,哈哈

用户和用户组的管理这一章很绕口,理解也还算容易,命令不多,但是选项很多,一个题可能有好几种做法,比如说usermod-a-gtechuser01和gpasswd-auser01tech,虽然都是讲user01用户加入到tech组中,但是还有那么的不同,唉,慢慢搞吧!

Linux系统下安装配置postfix邮件服务器教程

一,安装postfix,cyrus-sasl,cyrus-imapd

如果yum提示找不到软件包,请换一下源,请参考centos 6推荐使用epel源

代码如下:

[root@localhost~]# yum install postfix

[root@localhost~]# yum install cyrus*

二,删除了sendmail

代码如下:

[root@localhost~]# rpm-e sendmail

或者

代码如下:

[root@localhost~]# yum remove sendmail

三,更改默认邮件传输代理(MTA)

代码如下:

[root@localhost sasl2]# alternatives--config mta

共有 1个程序提供“mta”。

选择命令

-----------------------------------------------

*+ 1/usr/sbin/sendmail.postfix

按 Enter来保存当前选择[+],或键入选择号码:1

上面的只有一个postfix,sendmail已经被我删了。可以通过下面命令来查看。

代码如下:

[root@localhost~]# alternatives--display mta

四,postfix,cyrus-sasl,cyrus-imapd相关配置

1,postfix主配置文件main.cf

代码如下:

[root@localhost postfix]# vim/etc/postfix/main.cf

myhostname= localhost//76行,将等号后面的部分改写为本机主机名

mydomain= 51yip.com//82行,设置域名

myorigin=$mydomain//97行,把$myhostname改为$mydomain

inet_interfaces= all//112行,把后面的localhost改成all

mydestination=$myhostname, localhost.$mydomain, localhost,$mydomain//163行,把前面的注释拿掉,并加一下$mydomain

mynetworks= 192.168.0.0/24, 127.0.0.0/8//263行,设置内网和本地IP

local_recipient_maps=//209行,把前面的注释拿掉。

smtpd_banner=$myhostname ESMTP unknow//568行,把前面的注释拿掉,然后把$mail_name($mail_version)改成unknow

p//在main.cf文件的底部加上以下内容

smtpd_sasl_auth_enable= yes//使用SMTP认证

broken_sasl_auth_clients= yes//让不支持RFC2554的smtpclient也可以跟postfix做交互。

smtpd_sasl_local_domain=$myhostname//指定SMTP认证的本地域名

smtpd_sasl_security_options= noanonymous//取消匿名登陆方式

smtpd_recipient_restrictions= permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination//设定邮件中有关收件人部分的限制

smtpd_sasl_security_restrictions= permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination//设置允许范围

message_size_limit= 15728640//邮件大小

mailbox_transport=lmtp:unix:/var/lib/imap/socket/lmtp//设置连接cyrus-imapd的路径

如果不加local_recipient_maps这个配置,收邮件收不到,下面是qq的退信。

收件人邮件地址(tank@51yip.com)不存在,邮件无法送达。host mail.51yip.com[122.225.***.***] said: 550 5.1.1: Recipient address rejected: User unknown in local recipient table(in reply to RCPT TO command)

2,cyrus-sasl配置

代码如下:

[root@localhost postfix]# vim/etc/sasl2/smtpd.conf//在文件尾部加上以下内容

log_level: 3//记录log的模式

saslauthd_path:/var/run/saslauthd/mux//设置一下smtp寻找cyrus-sasl的路径,在这里要提一下的32位的机器和64位的机器smtpd.conf的路径是不一样的。

p//这是centos 5.5 32位机器上smtpd的配置文件

[root@linux sasl2]# ls|grep conf

Sendmail.conf

smtpd.conf

[root@linux sasl2]# pwd

/usr/lib/sasl2

//这是centos 6.0 64位机器上smtpd的配置文件,其他地方没有smtpd的配置文件

[root@localhost postfix]# ls/etc/sasl2/|grep smtpd

smtpd.conf

网上有不少关于postfix安装文章,配置的时候并没有明确提出是32位机器,还是64位机器。所以在这里标明一下。

3,配置cyrus-imapd

cyrus-imapd的主要配置文件有下面三个

代码如下:

/etc/sysconfig/cyrus-imapd

p/etc/cyrus.conf

p/etc/imapd.conf

这里是默认的配置,也就是说上面三个文件我是没有动过的。在这里提醒一下imapd.conf在这个文件里面,你可以设置管理账号

,设置邮件存放目录,设置密码连接方式等。

五,启动postfix,cyrus-sasl,cyrus-imapd

启动cyrus-imapd服务,就可以同时提供pop和imap服务,如果你已安装了dovecot服务就可以删除掉,cyrus-imapd和dovecot二者选其一就行了,二都可以提供pop和imap服务,不过cyrus-imapd可以为每个用户创建一个信息,而且信箱具有层次结构,比较好管理。建议用cyrus-imapd。

代码如下:

[root@linux sasl2]#/etc/init.d/postfix start

[root@linux sasl2]#/etc/init.d/saslauthd start

[root@linux sasl2]#/etc/init.d/cyrus-imapd start

查看一下进程,

代码如下:

//smtp监听是25端口

[root@linux u]# netstat-tpnl|grep smtpd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6319/smtpd

代码如下:

//110(POP3)和143(IMAP)端口,下面都已经有了

[root@linux u]# netstat-tpnl|grep cyrus

tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 23593/cyrus-master

tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 23593/cyrus-master

tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 23593/cyrus-master

tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 23593/cyrus-master

tcp 0 0:::993:::* LISTEN 23593/cyrus-master

tcp 0 0:::995:::* LISTEN 23593/cyrus-master

tcp 0 0:::110:::* LISTEN 23593/cyrus-master

tcp 0 0:::143:::* LISTEN 23593/cyrus-master

tcp 0 0:::2000:::* LISTEN 23593/cyrus-master

启动是没有问题的。

六,测试cyrus-sasl

代码如下:

[root@linux t]# passwd cyrus//设置cyrus的密码

[root@linux sasl2]# testsaslauthd-u cyrus-p'******'//系统用户和密码

0: OK"Success."

如果显示是上面的内容说是smtp是没有什么问题

七,cyrus-imapd生产邮件管理员账号,并添加测试账号

安装完cyrus-imapd后会产生一个管理账号是cyrus,所属用户组是mail

代码如下:

[root@linux sasl2]# id cyrus//imapd.conf里面默认的管理员账号就是cyrus

uid=76(cyrus) gid=12(mail) groups=12(mail),76(saslauth)

在认证admin账号时,我发现32位系统和64位系统有一点不同,二种系统我都配置过,配置都是一样的,

但是出现的结果不一样,看下图

   32位机器cyrus管理员用户认证

   64位机器cyrus管理员用户认证

从上图可以看出,32位的系统是不用加上--auth plain,64位的要,如果不加的话,根本进不去。

进去后,我们来添加一下测试账号

代码如下:

[root@linux sasl2]# cyradm-u cyrus localhost

IMAP Password:

localhost cm tank

localhost lm

tank(HasNoChildren)

localhost quit

这样我们可以在/var/spool/imap中看到,生成的目录,32位机器和64位机器生成的目录是不一样的

代码如下:

//这是64位系统生成的目录

[root@localhost u]# ls

user^tank

[root@localhost u]# pwd

/var/spool/imap/u

//这是32位系统生成的目录

[root@linux t]# ls

tank

[root@linux t]# pwd

/var/spool/imap/t

八,测试收发邮件

测试前添加一下DNS,

1,mail.51yip.com A默认 122.225.***.***

2,mail.51yip.com A联通 60.12.***.***

3,@ MX默认 mail.51yip.com

第1和第2,是添加二条A记录,第三行,设置了一下MX记录,这个千万不要忘了,不然你的域名是不通的。

方法有很多,我们可以利用telnet来测试,不过用telnet来测试收发邮件比较麻烦,用linux自带的

mail命令就方便多了

代码如下:

[root@localhost u]# mail-s'看一下' 95219454@qq.com/etc/imapd.conf

阅读剩余
THE END