在Fedora上建立自己的邮件服务器.doc_第1页
在Fedora上建立自己的邮件服务器.doc_第2页
在Fedora上建立自己的邮件服务器.doc_第3页
在Fedora上建立自己的邮件服务器.doc_第4页
在Fedora上建立自己的邮件服务器.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,vider) 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 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=, 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配置文档。语法如下: # m4 sendmail.mc sendmail.cf 也可以用源码目录树下的cf/cf/Build命令生成。前提是你要在该目录下有一个sendmail.mc文档。语法如下: # ./Build sendmail.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 local-host-names 接收邮件的主机名 # echo localhost RELAY access 用来拒绝或允许来自某个域的邮件,本例允许本地转发。 # makemap hash access access 生成access.db数据库 # touch domaintable 用来把旧域名映射互新域名 # makemap hash domaintable domaintable # touch mailertable 来覆盖向指定域的路由 # makemap hash mailertable mailertable # touch trusted-users # touch virtusertable 用来把用户和域名映射到其它地址 # makemap hash virtusertable virtusertable # chown root:wheel /var/spool/mqueue/ # chmod 700 /var/spool/mqueue # touch aliases 别名数据库,文本形式。可参照源码目录树下 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 . 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 , 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: :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 DONT ALLOW SPAMMERS HERE test.ORG DISCARD Ok-远程主机可以向你的邮件服务器发送邮件; RELAY-允许中转; REJECT-不能向你的邮件服务器发邮件和不能中转; DISCARD-发来的邮件将被丢弃,同时并不向发送者返回错误信息。 nnn text- 发来的邮件将被丢弃,但sendmail将会向发送者返回nnn确定的smtp代码和text变量确定的文本描述。 设置完成后要用makemap hash access.db access命令生成数据库。 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 直接发邮件给人。 mail -s title text 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 在Fedora上建立自己的邮件服务器一、软件的准备 A.检查你的系统是否已安装了以下软件1.pam2.pam-devel3.mysql4.mysql-servel5.mysql-devel6.imap-devel7.sharutilsB.下载以下软件1.metamail*.i386.rpm2.pam-mysql3.cyrus-sasl-2.1.154.postfix-2.0.165.courier-imapC.说明mysql-devel在第3个盘。我忘了装,结果pam-mysql和postfix的编译过不了。metamail和sharutils是取验证码用的。二、mysql数据库和表的建立A.rootlocalhost root# mysqlWelcome to the MySQL monitor.Commands end with ; or g. Your MySQL connection id is 3 to server version: 3.23.58 Type help; or h for help. Type c to clear the buffer. mysql use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql INSERT INTO db (Host,Db,User,Select_priv)VALUES(localhost,postfix,postfix,Y); Query OK, 1 row affected (0.00 sec) mysql CREATE DATABASE postfix; Query OK, 1 row affected (0.00 sec) mysql GRANT ALL ON postfix.* TO postfixlocalhost - IDENTIFIED BY postfix; Query OK, 0 rows affected (0.00 sec) mysql FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql quit Bye B.把下列文字复制存为postfix.sql #potfix_sql#bigin# CREATE TABLE alias ( username varchar(255) NOT NULL default, goto text NOT NULL, domain varchar(255) NOT NULL default, PRIMARY KEY (username) ) TYPE=MyISAM; CREATE TABLE domain ( domain varchar(255) NOT NULL default, description varchar(255) NOT NULL default, PRIMARY KEY (domain) ) TYPE=MyISAM; CREATE TABLE mailbox ( userid char(20) binary NOT NULL default, username varchar(255) NOT NULL default, password varchar(255) NOT NULL default, home varchar(255) NOT NULL default, maildir varchar(255) NOT NULL default, name varchar(255) NOT NULL default, uid smallint(5) unsigned NOT NULL default12345, gid smallint(5) unsigned NOT NULL default12345, quota varchar(255) NOT NULL default, domain varchar(255) NOT NULL default, create_date date NOT NULL default0000-00-00, create_time time NOT NULL default00:00:00, change_date date NOT NULL default0000-00-00, change_time time NOT NULL default00:00:00, last_access int(10) unsigned NOT NULL default0, passwd_lastchanged int(10) unsigned NOT NULL default0, status tinyint(4) NOT NULL default1, PRIMARY KEY (username), KEY status (status) ) TYPE=MyISAM; #end# rootlocalhost root# mysql postfix use postfix Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql show tables; +-+ | Tables_in_postfix | +-+ | alias | | domain| | mailbox | +-+ 3 rows in set (0.00 sec) mysql desc alias; +-+-+-+-+-+-+ | Field| Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | username | varchar(255) | PRI | | | | goto | text | | | | | domain | varchar(255) | | | | +-+-+-+-+-+-+ 3 rows in set (0.00 sec) mysql desc domain; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | domain| varchar(255) | PRI | | | | description | varchar(255) | | | | +-+-+-+-+-+-+ 2 rows in set (0.00 sec) mysql desc mailbox; +-+-+-+-+-+-+ | Field| Type | Null | Key | Default| Extra | +-+-+-+-+-+-+ | userid | varchar(20) binary | | | | username | varchar(255) | PRI | | | password | varchar(255) | | | | home | varchar(255) | | | | maildir| varchar(255) | | | | name | varchar(255) | | | | uid| smallint(5) unsigned | | 12345| | | gid| smallint(5) unsigned | | 12345| | | quota| varchar(255) | | | | domain | varchar(255) | | | | create_date| date | | 0000-00-00 | | | create_time| time | | 00:00:00 | | | change_date| date | | 0000-00-00 | | | change_time| time | | 00:00:00 | | | last_access| int(10) unsigned | | 0| | | passwd_lastchanged | int(10) unsigned | | 0| | | status | tinyint(4) | MUL | 1| | +-+-+-+-+-+-+ 17 rows in set (0.00 sec) mysql domain表的解释: domain 任意的domain. description 通常是2种 local: 用于本地的 or virtual: 用于是虚拟的. alias表的解释: username 是虚拟的邮箱addressdomain.tld ,将被转发到goto下的联结中. goto 可以用简单的名字,如果是本地用户名,如(root, postmaster, etc.), 或者是整个的邮箱名字,userdomain.tld。 Mailbox表的内容: Userid 使用者编码 username 可以是user.domain.tld 或 userdomain.tld password 在mysql中用encrypt(password) 输入. name 使用着的真实姓名。 uid 虚拟用户身份uid gid 组的gidhome /usr/local/virtual/. Maildirs必须在此目录下。 domain 这栏可以不要,但有些软件需要他。 maildir 是整个地址,必须带”/”结尾。Quota 邮箱的空间或信息量的限制。 status 0 为禁止。MYSQL_WHERE_CLAUSE= status. 三、pam-mysql的编译tar pam-mysql-5.0.tar.gzmake cp pam_mysql.so /lib/security四、修改pam rootlocalhostpam_mysql#cd/etc/pam.drootlocalhostpam.d#cp/work/postfixpostfixrootlocalhostpam.d#postfix的内容如下:#/etc/pam.d/postfix#echoauthsufficientpam_mysql.souser=postfixpasswd=postfixhost=localhostdb=postfixtable=mailboxusercolumn=usernamepasswdcolumn=passwordcrypt=1echoaccountrequiredpam_mysql.souser=postfixpasswd=postfixhost=localhostdb=postfixtable=mailboxusercolumn=usernamepasswdcolumn=passwordcrypt=1echoauthsufficientpam_unix_auth.soechoaccountsufficientpam_unix_acct.sorootlocalhostpam.d#-fimap&mvimapimap.origrootlocalhostpam.d#-fpop&mvpoppop.origrootlocalhostpam.d#-fsmtp&mvsmtpsmtp.origrootlocalhostpam.d#n-spostfiximapbash:n:commandnotfoundrootlocalhostpam.d#ln-spostfiximaprootlocalhostpam.d#ln-spostfixpoprootlocalhostpam.d#ln-spostfixsmtprootlocalhostpam.d#cppostfixsieverootlocalhostpam.d#cd. 五、cyrus-sasl的安装配置我本不想重新编译cyrus-sasl的,可是fedora自带的在我测试的时候出问题,还是重编译吧,虽然fedora带的也是2.1.15版本。rootlocalhost etc# cd /ruanjian rootlocalhost ruanjian# cd cyrus-sasl-2.1.15 rootlocalhost cyrus-sasl-2.1.15# ./configure -disable-sample -disable-pwcheck -disable-gssapi -disable-cram -disable-digest -disable-krb4 -disable-anon -with-saslauthd=/var/run/saslauthd -enable-plain -enable-login rootlocalhost cyrus-sasl-2.1.15# -d /usr/lib/sasl2 & mv /usr/lib/sasl2 /usr/lib/sasl2.orig rootlocalhost cyrus-sasl-2.1.15# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2 rootlocalhost cyrus-sasl-2.1.15# echo /usr/local/lib /etc/ld.so.conf rootlocalhost cyrus-sasl-2.1.15# echo /usr/local/lib/sasl2 /etc/ld.so.conf rootlocalhost cyrus-sasl-2.1.15# ldconfig rootlocalhost cyrus-sasl-2.1.15# rootlocalhost cyrus-sasl-2.1.15# echo pwcheck_method: saslauthd /usr/lib/sasl2/smtpd.conf rootlocalhost cyrus-sasl-2.1.15# /usr/local/sbin/saslauthd -a pam rootlocalhost cyrus-sasl-2.1.15# 六、postfix的安装和配置A.先停止sendmail.fedora已经默认安装了sendmail,去掉它。rootlocalhost ruanjian# /etc/init.d/sendmail stop 关闭 sendmail:失败 rootlocalhost ruanjian# mv /usr/bin/newaliases /usr/bin/newaliases.orig rootlocalhost ruanjian#mv /usr/bin/mailq /usr/bin/mailq.orig rootlocalhost ruanjian# mv /usr/sbin/sendmail /usr/sbin/sendmail.orig B.添加用户和组rootlocalhost ruanjian# groupadd -g 12345 postfix rootlocalhost ruanjian# groupadd -g 12346 postdrop rootlocalhost ruanjian# useradd -u 12345 -g 12345 -c postfix -d /dev/null -s /nologin postfix C.编译postfixrootmail ruanjian# cd postfix-2.0.16 rootmail postfix-2.0.16# make -f Makefile.init makefiles CCARGS=-DUSE_SASL_AUTH -DHAS_MYSQL -I/usr/include/mysql -I/usr/include/sasl AUXLIBS=-L/usr/lib/mysql -L/usr/local/lib/sasl2 -lmysqlclient -lsasl2 -lz -lm rootmail postfix-2.0.16# make install rootlocalhost postfix-2.0.16# cd /etc rootlocalhost etc# mv aliases aliases.orig rootlocalhost etc# ln -s postfix/aliases aliases rootlocalhost etc# cd postfix rootlocalhost postfix# echo root: tester /etc/postfix/aliases rootlocalhost postfix# postalias /etc/postfix/aliases rootlocalhost postfix# D.配置postfix. 1. 主要是main.cf的配置。 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_gid_maps = static:12345 virtual_mailbox_base = /usr/local/virtual v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论