基础知识
1.守护进程
sendmail,监听端口25。
2.配置文件
/etc/aliases /etc/mail
/etc/mail/sendmail.cf
/etc/mail/sendmail.mc(通过修改该文件生成一个sendmail.cf文件,如下使用m4命令:)
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf (m4需要安装sendmail-cf-8.13.1-3.2.el4.i386.rpm)
/etc/mail/access.db 决定那些主机可以通过本邮件服务器发送邮件,该文件是二进制,所以要通过修改access文件来生产access.db。
access 文件格式:
IP|域名 RELAY|REJECT|OK|DISCARD (允许SMTP代理投递|拒绝接受并发布错误信息|无条件接受|放弃邮件,无错误信息发布)
192.168 RELAY //允许192.168整个网段的IP
使用命令makemap生产access.db
makemap hash /etc/mail/access.db < /etc/mail/access
/etc/mail/submit.mc
/etc/mail/submit.cf
3.启动脚本
service sendmail start|stop|restart|status
4.sendmail.mc初始配置
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl 包含/usr/share/sendmail-cf/m4/cf.m4文件;
VERSIONID(`setup for Red Hat Linux')dnl 定义版本信息;
OSTYPE(`linux')dnl 选择包含操作系统指定属性的文件;
define(`confDEF_USER_ID',``8:12'')dnl 指定sendmail用户使用用户ID为8,组ID为12;
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl 设置等待连接的最长时间为1分钟;
define(`confTRY_NULL_MX_LIST',true)dnl 如果MX记录指向本机,则sendmail直接连接到远程主机;
define(`confDONT_PROBE_INTERFACES',true)dnl sendmail不会自动的把服务器网络接口视为有效地址;
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl 设置procmail的存放路径;
define(`ALIAS_FILE', `/etc/aliases')dnl 设置邮件别名存放路径;
define(`STATUS_FILE', `/var/log/mail/statistics')dnl 设置日志文件路径;
define(`UUCP_MAILER_MAX', `2000000')dnl 基于UUCP协议的mailer处理信息的最大限制为2M;
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl 设置用户数据库文件路径;
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl 设置部分邮件命令的标志;
define(`confAUTH_OPTIONS', `A')dnl 授权成功后,将AUTH参数添加到邮件的消息头中;
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 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(`confDONT_BLAME_SENDMAIL',`groupreadablekeyfile')dnl
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 设置ident查询等待的最大响应时间为0秒;
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl 允许msa被DAMEMON-OPION覆盖的默认配置;
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl 设置邮件发送器smrsh的存放路径;
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl 设置邮件发送器数据库的存放路径;
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl 设置虚拟邮件域数据库的存放路径;
FEATURE(redirect)dnl 支持.redirect虚拟域;
FEATURE(always_add_domain)dnl 增加主机名到所有本地发送的邮件;
FEATURE(use_cw_file)dnl 加载/etc/mail/local-host-name文件中定义的主机;
FEATURE(use_ct_file)dnl 加载可信任用户名单;
dnl define(`confMAX_DAEMON_CHILDREN', 12)dnl
dnl define(`confCONNECTION_RATE_THROTTLE', 3)dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl 使用procmail作为本地邮件发送者;
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl 从指定数据库中加载可中继的域;
FEATURE(`blacklist_recipients')dnl 根据访问数据库的值过滤外来邮件;
EXPOSED_USER(`root')dnl 禁止伪装发送用户地址中出现root用户;
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl 指定sendmail任为MTA运行时的参数;
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl
dnl DAEMON_OPTIONS(`Name=MTA-v4, Family=inet, Name=MTA-v6, Family=inet6')
FEATURE(`accept_unresolvable_domains')dnl 可接收不能由DNS解析的主机所发送的邮件;
dnl FEATURE(`relay_based_on_MX')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl 设置本地域;
dnl MASQUERADE_AS(`mydomain.com')dnl
dnl FEATURE(masquerade_envelope)dnl
dnl FEATURE(masquerade_entire_domain)dnl
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl 指定sendmail所有SMTP发送者,包括smtp,esmtp,smtp8和relay;
MAILER(procmail)dnl 指定使用procmail作为本地邮件发送者;
5.submit.mc初始配置(通过修改该文件使用m4生成submit.cf)
divert(0)dnl 将配置文件导出生成cf配置文件;
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
define(`confCF_VERSION', `Submit')dnl 设置配置版本;
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining 经过proto.m4检查后,将__OSTYPE__值设置为空;
define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet 设置支持DECNET;
define(`confTIME_ZONE', `USE_TZ')dnl 设置系统时区;
define(`confDONT_INIT_GROUPS', `True')dnl 禁止直行initgroups程序;
define(`confPID_FILE', `/var/run/sm-client.pid')dnl 设置PID文件路径;
dnl define(`confDIRECT_SUBMISSION_MODIFIERS',`C')
FEATURE(`use_ct_file')dnl 加载可信任用户名单
dnl
dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1]
FEATURE(`msp', `[127.0.0.1]')dnl 设置msp的IP地址
6./etc/aliases
设置别名,默认情况,系统中所有账号别名为root,所以邮件全部由root接收。
修改完aliases,使用命令newaliases生效。
7.安装dovecot,并启动服务,来提供pop和imap服务,实现异地接受邮件
/etc/dovecot.conf文件内容修改:
protocols = imap imaps pop3 pop3s