LINUX邮件服务器搭建
1. 用以下命令查看系统是否安装了sendmail:
[root@mail /root]# rpm –qa |grep sendmail
sendmail-8.11.0-8
2. 卸载sendmail:
[root@mail /root]# rpm -e sendmail –nodeps
3. 用以下命令杀死运行中的sendmail进程:
[root@mail /root]# killall sendmail
如果系统提示:
sendmail: no process killed
则说明当前系统中没有sendmail进程。
4. 安装postfix:
[root@mail /root]# rpm -ivh postfix-20010228release-2.i386.rpm
若已经安装,则此步可以省略。(注:安装时更好用rpm包,会自动创建postfix用户和postfix组)
5. 安装imap
rpm –ivh /mnt/cdrom/RedHat/RPMS/ imap-4.7c2-12.rpm
imap使pop3有效,即打开110端口。(注:安装时更好用rpm包)
若已经安装,则此步可以省略。
6. 检查系统中是否安装了cyrus-sasl
执行以下命令查看系统中是否安装了cyrus-sasl:
rpm –qa |grep cyurs
如果您看到以下提示,则说明已经安装了cyrus-sasl
[root@test bye2000]# rpm -qa |grep sasl
cyrus-sasl-devel-1.5.24-17
cyrus-sasl-1.5.24-17
否则,请用rpm –ivh 命令先安装所需sasl-cyrus包。
7.修改postfix用户
同时应该让该用户不能登录到系统,也即不为该用户指定可执行的登录外壳程序和可用
的用户宿主目录。
编辑/etc/passwd文件中的相关条目如下所示:
postfix:x:89:89::/no/where:/no/shell [编辑后,只修改蓝色部分就可以了]
即:修改用户的Home directory和Shell 参照 /etc/passwd文件
8.编辑postfix的主要配置文件/etc/postfix/main.cf,根据需求只需修改以下几个参数:
1)mydomain
指明你的域名,在这里我们指定:
mydomain = xx.com
2)myorigin
myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user@domain.com,则该参数指定@后面的域名。在这里我们指定:
myorigin = $mydomain
3)inet_interfaces
inet_interfaces = all 监听所有端口
4)mydestination
mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix
系统要接收什么样的邮件。通常与myorigin一样:
mydestination = $mydomain
5)mynetworks_style
设置 *** 类型,我们指定:
mynetworks_style = subnet
6)ynetworks
定义可以使用的此 *** tp服务器发信的客户ip地址,因为公司的ip范围已知,所以我们
指定:
mynetworks = 192.168.1.0/24
注:此项可根据情况而定,主要是指定ip范围,假如公司的ip划分是按照网段来的,例如:10.10.1.0~10.10.1.9,10.10.3.0~10.10.3.9等等更细。根据需要,该项可以不设置。
7) *** TP的配置
为了告诉postfix采用sasl来进行 *** TP的用户认证,我们必须在/etc/postfix/main.cf文件的最后添加以下几行:
*** tpd_sasl_auth_enable = yes
*** tpd_recipient_restrictions = permit_sasl_authenticated
permit_auth_destination reject
broken_sasl_auth_clients = yes
*** tpd_sasl_security_options = noanonymous
说明如下:
*** tpd_sasl_auth_enable:告诉 *** TP客户,该 *** TP服务器需要进行用户认证。
*** tpd_recipient_restrictions = permit_sasl_authenticated
permit_auth_destination reject
仅仅中继通过 *** TP认证的客户端邮件,以及接收本postfix为最后一站的邮件。
broken_sasl_auth_clients = yes
有一些Microsoft 的 *** TP客户端,比如Outlook Express 4.X采用的是非标准的 *** TP认证协议,将该选项设置为yes可以解决这类不兼容问题。
*** tpd_sasl_security_options = noanonymous
控制本地 *** TP认证所采用的机制,这里是允许任何非匿名认证 *** 。
9.配置SASL
进入/usr/lib/sasl/目录,用touch新建这样一个文件:
[root@test sasl]# touch *** tpd.conf
在该文件中加入以下内容:
[root@test sasl]# more *** tpd.conf
pwcheck_method:pam
也就是指定通过PAM来进行用户认证。
10.配置PAM
进入/etc/pam.d/目录,用touch新建这样一个文件:
[root@test pam.d]# touch *** tp
在该文件中加入如下内容:
[root@test pam.d]# more *** tp
#%PAM-1.0
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
也即和/etc/pam.d/pop文件的内容是一致的。
11.修改/etc/shadow文件权限
因为PAM最终要去读取/etc/shadow文件的内容来进行用户认证,但是/etc/shadow文件
权限是设置为只有root用户可以读写,而我们的postfix是运行在postfix用户权限之下,所以我们要合理的设置/etc/shadow文件权限,以便让pam可以读取其内容。
执行以下命令,让root组也可以读取shadow:
[root@test /etc]# chmod 640 /etc/shadow
然后再将postfix用户加入root组,采用以下命令:
[root@test /etc]# usermod -G root postfix
12.编辑postfix的主要配置文件/etc/postfix/master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
*** tp inet n - n - - *** tpd
这里开始
# *** tps inet n - n - - *** tpd
# -o *** tpd_tls_wrappermode=yes -o *** tpd_sasl_auth_enable=yes
#submission inet n - n - - *** tpd
# -o *** tpd_enforce_tls=yes -o *** tpd_sasl_auth_enable=yes
这里结束
#628 inet n - n - - qmqpd
把我标的注释部分去掉即可。
13.配置pop3
RedHat7.0已经使用xinetd代替了以前的inetd,为了使pop3服务启动,我们编辑
/etc/xinetd.d/ipop3文件,将其中的disable = yes改为disable = no 以便启动pop3
服务。
为了使改动生效,执行以下命令:
/etc/rc.d/init.d/xinetd reload
14.启动postfix
执行以下命令启动postfix:
/etc/rc.d/init.d/postfix start
这样,一个支持 *** TP认证的postfix邮件服务器就配好了。
搭建邮件服务器
WindowsServer2003默认情况下是没有安装POP3和 *** TP服务组件的,因此要手工添加。
1.安装POP3服务组件
以系统管理员身份登录WindowsServer2003系统。依次进入“控制面板→添加或删除程序→添加/删除Windows组件”,在弹出的“Windows组件向导”对话框中选中“电子邮件服务”选项,点击“详细信息”按钮,可以看到该选项包括两部分内容:POP3服务和POP3服务Web管理。为方便用户远程Web方式管理邮件服务器,建议选中“POP3服务Web管理”。
2.安装 *** TP服务组件
选中“应用程序服务器”选项,点击“详细信息”按钮,接着在“Internet信息服务(IIS)”选项中查看详细信息,选中“ *** TPService”选项,最后点击“确定”按钮。此外,如果用户需要对邮件服务器进行远程Web管理,一定要选中“万维网服务”中的“远程管理(HTML)”组件。完成以上设置后,点击“下一步”按钮,系统就开始安装配置POP3和 *** TP服务了。
1.创建邮件域
点击“开始→管理工具→POP3服务”,弹出POP3服务控制台窗口。选中左栏中的POP3服务后,点击右栏中的“新域”,弹出“添加域”对话框,接着在“域名”栏中输入邮件服务器的域名,也就是邮件地址“@”后面的部分,如“ rtj.net ”,最后点击“确定”按钮。其中“ rtj.net ”为在Internet上注册的域名,并且该域名在DNS服务器中设置了MX邮件交换记录,解析到WindowsServer2003邮件服务器IP地址上。
2.创建用户邮箱
选中刚才新建的“rtj.net”域,在右栏中点击“添加邮箱”,弹出添加邮箱对话框,在“邮箱名”栏中输入邮件用户名,然后设置用户密码,最后点击“确定”按钮,完成邮箱的创建。
完成POP3服务器的配置后,就可开始配置 *** TP服务器了。点击“开始→程序→管理工具→Internet信息服务(IIS)管理器”,在“IIS管理器”窗口中右键点击“默认 *** TP虚拟服务器”选项,在弹出的菜单中选中“属性”,进入“默认 *** TP虚拟服务器”窗口,切换到“常规”标签页,在“IP地址”下拉列表框中选中邮件服务器的IP地址即可。点击“确定”按钮,这样一个简单的邮件服务器就架设完成了。
完成以上设置后,用户就可以使用邮件客户端软件连接邮件服务器进行邮件收发工作了。在设置邮件客户端软件的 *** TP和POP3服务器地址时,输入邮件服务器的域名“rtj.net”即可。
[root@iZ11uh778whZMaildir]#uname–a
[root@iZ11uh778whZMaildir]#cat/etc/issue
查看posfix的版本
[root@iZ11uh778whZMaildir]#postconfmail_version
一般是默认就安装了posfix的,如果没有暗转的话,是用yum-yinstallpostfix安装
[root@iZ11uh778whZMaildir]#yum-yinstallpostfix
查看默认的mta
[root@iZ11uh778whZMaildir]#alterna TI ves--displaymta
我们可以看到默认的mta就是postfix,也许是sendmail,如果不是postfix,则修改为postfix
[root@iZ11uh778whZMaildir]# alterna TI ves --config mta
There is1 program that provides ‘mta’。
Selec TI on Command
-----------------------------------------------
*+1 /usr/ *** in/sendmail.postfix
Enter to keepthe current selec TI on[+], or type selection number: 1
Postfix的配置文件主要有:/etc/postfix/main.cf和/etc/postfix/master.cf
我们主要修改/etc/postfix/main.cf
[root@iZ11uh778whZ postfix]# vim /etc/postfix/ main.cf
将#myhostname =virtual.domain.tld前面的‘#’去掉,改为
myhostname = localhost //系统的主机名称
将#mydomain = domain.tld前面的‘#’去掉,改为
mydomain = 51cs8.com //email的地址,为可用的域名
将#myorigin = $mydomain前面的‘#’去掉,改为
myorigin = $mydomain //指定本地发送邮件中来源和传递显示的域名
将#inet_interfaces =localhost前的‘#’去掉,改为
inet_interfaces = all //设置 *** 接口以便Postfix能接收到邮件
将#mydestination = mydomain, localhost前面的‘#’去掉,改为
mydestination = mydomain, localhost,$mydomain //指定哪些邮件地址允许在本地发送邮件
将#local_recipient_maps = 前面的‘#’去掉,改为
local_recipient_maps =
将#mynetworks =168.100.189.0/28, 127.0.0.0/8前面的‘#’去掉,改为
mynetworks = 10.47.200.0/21, 127.0.0.0/8 //根据自己内网的实际情况写,指定受信任 *** TP的列表,具体的说,受信任的 *** TP客户端允许通过Postfix传递邮件
将#home_mailbox = Maildir前面的‘#’去掉,改为
home_mailbox = Maildir/ //设置邮箱路径与用户目录有关,也可以指定要使用的邮箱风格。
将# *** tpd_banner = mail_name ($mail_version)前面的‘#’去掉,改为
*** tpd_banner = $myhostname E *** TP unknow //不显示 *** TP服务器的相关信息
在配置文件的最后追加如下内容:
# *** tpd
*** tpd_sasl_auth_enable = yes //使用 *** tp认证
broken_sasl_auth_clients = yes //让不支持RFC2554的 *** tpclient也可以跟postfix做交互。
*** tpd_sasl_local_domain = $myhostname //指定 *** TP认证的本地域名
*** tpd_sasl_security_options = noanonymous //取消匿名登陆方式
*** tpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination //设定邮件中有关收件人部分的限制
[root@localhost ~]#yum -y install cyrus*
因为我之前安装过,所提提示已经安装。
Cyrus-sasl的配置文件路径:/etc/sasl2/ *** tpd.conf
[root@iZ11uh778whZ postfix]# vim /etc/sasl2/ *** tpd.conf
在文件尾部追加
log_level: 3 //记录log的模式
saslauthd_path:/var/run/saslauthd/mux //设置一下 *** tp寻找cyrus-sasl的路径
下面是我/etc/sasl2/ *** tpd.conf的内容:
pwcheck_method: saslauthd
mech_list: plain login
log_level: 3
saslauthd_path: /var/run/saslauthd/mux
[root@iZ11uh778whZ postfix]# /etc/init.d/postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[root@iZ11uh778whZ postfix]# /etc/init.d/saslauthd restart
Stopping saslauthd: [ OK ]
Starting saslauthd: [ OK ]
[root@iZ11uh778whZ postfix]# /etc/init.d/cyrus-imapd restart
Shutting down cyrus-imapd: [ OK ]
Exporting cyrus-imapd databases: [ OK ]
Importing cyrus-imapd databases: [ OK ]
Starting cyrus-imapd: [ OK ]
查看 *** tp启动情况:
[root@iZ11uh778whZ postfix]# netstat -tpnl | grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1714/master
查看imap启动情况:
[root@iZ11uh778whZ postfix]# netstat -tpnl | grep cyrus
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 2687/cyrus-master
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2687/cyrus-master
tcp 0 0 0.0.0.0:4190 0.0.0.0:* LISTEN 2687/cyrus-master
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2687/cyrus-master
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 2687/cyrus-master
[root@iZ11uh778whZ postfix]# chkconfig postfix on
[root@iZ11uh778whZ postfix]# chkconfigpostfix --list
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@iZ11uh778whZ postfix]# chkconfig saslauthd on
[root@iZ11uh778whZ postfix]# chkconfigsaslauthd --list
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@iZ11uh778whZ postfix]# chkconfig cyrus-imapd on
[root@iZ11uh778whZ postfix]# chkconfig cyrus-imapd--list
cyrus-imapd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
添加账号、密码 system | system
[root@iZ11uh778whZ postfix]# useradd system
[root@iZ11uh778whZ postfix]# passwd system
Changing password for user system.
New password:
BAD PASSWORD: it is based on a dictionaryword
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
测试是否可用
[root@iZ11uh778whZpostfix]# testsaslauthd -u system -p system
0: OK “Success.”
安装完cysus-imapd会自动产生一个管理账号cyrus,所属用户组是mail
[root@iZ11uh778whZ tank]# id cyrus
uid=76(cyrus) gid=12(mail)groups=12(mail),76(saslauth)
将账户system的所在组切换到mail组
[root@iZ11uh778whZ tank]# usermod -g 12 system
[root@iZ11uh778whZ tank]# id system
uid=502(system) gid=12(mail)groups=12(mail)
添加测试账号:
[root@iZ11uh778whZtank]# cyradm -u cyrus localhost --auth plain
如何搭建高级匿名的http ***
1. HTTPS *** 问题很大,正常的 *** 应该是建立一个隧道,proxy 收到请求之后,向 server 发送HTTP/1.1 200 Connection established,然后直接转发双方通信。这样 server 一定会知道 client 在 proxy 后面。
如果 proxy 假装是 client,那就是中间人攻击了。正常来讲,你不可能获得 client 访问的 URL 到底是什么。解决 *** 也许可以自签一个证书?
2. 浏览器使用 *** 服务器设置时候,发给 proxy 的内容和没有使用发给 server 的内容是不同的。起码据我所知,直接访问一般会是 GET / HTTP/1.1而发给 proxy 的会带着域名。题主所说 header 那个不知道。所以需要确认一下。而且,HOST 那个字段具体什么含义我现在还搞不清楚,正确的 proxy 到底要根据请求的 path 建立连接还是HOST?有知道的请告诉我。。。而且坑爹的是不同浏览器的 HOST 还有点不同。记得https时候 Firefox 还是 Opera 的 HOST 里会带:443。。。所以不能确定到底有多少坑
3. 有一种和题主需求类似的实现,Interception proxying,Interception proxying 对 client 来说假装是 server,对 server 来说假装是 client。但是据 polipo 的作者说法,这种实现问题很大,不好说是不是能保证和协议兼容:
Interception proxying is a fundamentally broken design (see for
example this
posting and
RFC 3143,
Section 2.2.2), and will not be supported by Polipo.
不过,题主这种需求肯定有人想过。多 Google 一下应该有可用的、不完美的方案,但是既然标签里加了 VPS,我猜其实只是想找个好用的 FQ *** 吧?
关条目如下所示:postfix:x:89:89::/no/where:/no/shell [编辑后,只修改蓝色部分就可以了]即:修改用户的Home directory和Shell
em -p system 0: OK “Success.” 安装完cysus-imapd会自动产生一个管理账号cyrus,所属用户组是mail [root@iZ11uh778whZ tank]# id cyrus uid=76(cyrus) gid=12(mail)groups=12(m
pam_stack.so service=system-auth 也即和/etc/pam.d/pop文件的内容是一致的。11.修改/etc/shadow文件权限 因为PAM最终要去读取/etc/shadow文件的内容来进行用户认证,但是/etc/shadow文件权限是设置为只
件地址为user@domain.com,则该参数指定@后面的域名。在这里我们指定:myorigin = $mydomain3)inet_interfacesinet_interfaces = all 监听所有端口4)mydestinationmydestination参数指定postfix