編譯安裝Postfix:由于系統自帶的Postfix不支援mysql擴充,是以需要自己編譯安裝
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<code># service sendmail stop //關閉并解除安裝自帶的sendmail服務</code>
<code># rpm -e sendmail --nodeps</code>
<code># rpm -ivh postfix-2.3.3-6.el5.src.rpm</code>
<code># cd /usr/src/redhat/SPECS</code>
<code># vi postfix.spec</code>
<code>%define LDAP 2</code>
<code>%define MYSQL 1 </code><code>//</code><code>添加Mysql的支援(預設已注釋)</code>
<code>%define PCRE 1</code>
<code>%define SASL 2</code>
<code>%define TLS 1</code>
<code>%define IPV6 1</code>
<code>%define POSTDROP_GID 90</code>
<code>%define PFLOGSUMM 1</code>
<code># rpmbuild -bb postfix.spec</code>
<code># cd ../RPMS/x86_64</code>
<code># rpm -ivh postfix-2.3.3-6.x86_64.rpm</code>
<code># vi /etc/postfix/main.cf</code>
<code>queue_directory = </code><code>/var/spool/postfix</code>
<code>command_directory = </code><code>/usr/sbin</code>
<code>daemon_directory = </code><code>/usr/libexec/postfix</code>
<code>mail_owner = postfix</code>
<code>myhostname = mail.xfcy.org</code>
<code>mydomain = xfcy.org</code>
<code>myorigin = $mydomain</code>
<code>inet_interfaces = all</code>
<code>mydestination =</code>
<code>unknown_local_recipient_reject_code = 550</code>
<code>mynetworks = 192.168.0.0</code><code>/24</code><code>, 127.0.0.0</code><code>/8</code>
<code>alias_maps = </code><code>hash</code><code>:</code><code>/etc/aliases</code>
<code>alias_database = </code><code>hash</code><code>:</code><code>/etc/aliases</code>
<code># chkconfig postfix on</code>
<code># /etc/init.d/postfix start</code>
Postfix郵件的外發測試:
33
34
35
36
<code># telnet localhost 25</code>
<code>Trying 127.0.0.1...</code>
<code>Connected to localhost.localdomain (127.0.0.1).</code>
<code>Escape character is </code><code>'^]'</code><code>.</code>
<code>220 mail.xfcy.org ESMTP Postfix</code>
<code>ehlo mail.xfcy.org</code>
<code>250-mail.xfcy.org</code>
<code>250-PIPELINING</code>
<code>250-SIZE 10240000</code>
<code>250-VRFY</code>
<code>250-ETRN</code>
<code>250-ENHANCEDSTATUSCODES</code>
<code>250-8BITMIME</code>
<code>250 DSN</code>
<code>mail from:[email protected]</code>
<code>250 2.1.0 Ok</code>
<code>rcpt to:[email protected]</code>
<code>250 2.1.5 Ok</code>
<code>data</code>
<code>354 End data with <CR><LF>.<CR><LF></code>
<code>subject:</code><code>test</code>
<code>postfix </code><code>test</code>
<code>.</code>
<code>250 2.0.0 Ok: queued as 5212B96E83</code>
<code>quit</code>
<code>221 2.0.0 Bye</code>
<code>Connection closed by foreign host.</code>
<code># tailf /var/log/maillog</code>
<code>May 17 12:52:50 mail postfix</code><code>/smtpd</code><code>[15176]: connect from mail.xfcy.org[192.168.0.89]</code>
<code>May 17 12:53:04 mail postfix</code><code>/smtpd</code><code>[15176]: DF4B796E26: client=mail.xfcy.org[192.168.0.89]</code>
<code>May 17 12:53:15 mail postfix</code><code>/cleanup</code><code>[15210]: DF4B796E26: message-</code><code>id</code><code>=<[email protected]></code>
<code>May 17 12:53:15 mail postfix</code><code>/qmgr</code><code>[3050]: DF4B796E26: from=<[email protected]>, size=379, nrcpt=1 (queue active)</code>
<code>May 17 12:53:16 mail postfix</code><code>/smtp</code><code>[15214]: DF4B796E26: host 163mx03.mxmail.netease.com[220.181.14.159] said: 451 DT:SPM mx44, XsCowEBpUEu7t5VRWqdEAw--.1675S2, please try again 1368766395 http:</code><code>//mail</code><code>.163.com</code><code>/help/help_spam_16</code><code>.htm?ip=210.13.194.138&hostid=mx44&</code><code>time</code><code>=1368766395 (</code><code>in</code> <code>reply to end of DATA </code><code>command</code><code>)</code>
<code>May 17 12:53:17 mail postfix</code><code>/smtp</code><code>[15214]: DF4B796E26: to=<[email protected]>, relay=163mx01.mxmail.netease.com[220.181.14.139]:25, delay=16, delays=14</code><code>/0</code><code>.02</code><code>/1</code><code>.6</code><code>/0</code><code>.24, dsn=2.0.0, status=sent (250 Mail OK queued as mx10,PMCowEBJElK8t5VRT8XKFQ--.914S2 1368766396)</code>
<code>May 17 12:53:17 mail postfix</code><code>/qmgr</code><code>[3050]: DF4B796E26: removed</code>
<code>May 17 12:53:23 mail postfix</code><code>/smtpd</code><code>[15176]: disconnect from mail.xfcy.org[192.168.0.89]</code>
安裝配置Dovecot:
<code># yum -y install dovecot</code>
<code># vi /etc/dovecot.conf</code>
<code>mail_location = maildir:</code><code>/var/maildata/domains/</code><code>%d/%n</code><code>/Maildir</code>
<code>auth default {</code>
<code> </code><code>mechanisms = plain</code>
<code> </code><code>#把pam { }這一項注釋掉</code>
<code> </code><code>passdb sql {</code>
<code> </code><code>args = </code><code>/etc/dovecot-mysql</code><code>.conf</code>
<code> </code><code>}</code>
<code> </code><code>userdb </code><code>passwd</code> <code>{</code>
<code> </code><code>userdb sql {</code>
<code> </code><code>args =</code><code>/etc/dovecot-mysql</code><code>.conf</code>
<code> </code><code>user = root</code>
<code>}</code>
<code># vi /etc/dovecot-mysql.conf //建立mysql認證檔案</code>
<code>driver = mysql</code>
<code>connect = host=localhost dbname=extmail user=extmail password=extmail</code>
<code>default_pass_scheme = CRYPT</code>
<code>password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = </code><code>'%u'</code>
<code>user_query = SELECT maildir, uidnumber AS uid,gidnumber AS gid FROM mailbox WHERE username = </code><code>'%u'</code>
<code># chkconfig dovecot on</code>
<code># /etc/init.d/dovecot start</code>
<code># netstat -lntp | grep dovecot</code>
<code>tcp 0 0 :::993 :::* LISTEN 5033</code><code>/dovecot</code>
<code>tcp 0 0 :::995 :::* LISTEN 5033</code><code>/dovecot</code>
<code>tcp 0 0 :::110 :::* LISTEN 5033</code><code>/dovecot</code>
<code>tcp 0 0 :::143 :::* LISTEN 5033</code><code>/dovecot</code>
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<code>配置cyrus-sasl認證:</code>
<code># yum -y install cyrus-sasl</code>
<code># postconf -a</code>
<code>cyrus</code>
<code>dovecot</code>
<code># vi /etc/postfix/main.cf //為postfix開啟基于cyrus-sasl的認證功能</code>
<code>##====================SASL========================</code>
<code>smtpd_recipient_restrictions =</code>
<code> </code><code>permit_mynetworks,</code>
<code> </code><code>permit_sasl_authenticated,</code>
<code> </code><code>reject_non_fqdn_hostname,</code>
<code> </code><code>reject_non_fqdn_sender,</code>
<code> </code><code>reject_non_fqdn_recipient,</code>
<code> </code><code>reject_unauth_destination,</code>
<code> </code><code>reject_unauth_pipelining,</code>
<code> </code><code>reject_invalid_hostname,</code>
<code> </code><code>reject_unknown_sender_domain,</code>
<code> </code><code>reject_unknown_recipient_domain</code>
<code># SMTP sender login matching config</code>
<code>smtpd_sender_restrictions =</code>
<code> </code><code>reject_sender_login_mismatch</code>
<code># SMTP AUTH config here</code>
<code>broken_sasl_auth_clients = </code><code>yes</code>
<code>smtpd_sasl_auth_enable = </code><code>yes</code>
<code>smtpd_sasl_local_domain = $myhostname</code>
<code>smtpd_sasl_security_options = noanonymous</code>
<code># banner</code>
<code>mail_name = Postfix - by xfcy.org</code>
<code>smtpd_banner = Welcome to $myhostname ESMTP , $mail_name</code>
<code># service postfix restart</code>
<code>Trying 192.168.0.89...</code>
<code>Connected to mail.xfcy.org (192.168.0.89).</code>
<code>220 Welcome to mail.xfcy.org ESMTP , Postfix - by xfcy.org</code>
<code>250-AUTH PLAIN LOGIN </code><code>//</code><code>出現以下兩行表示cyrus-sasl認證添加成功</code>
<code>250-AUTH=PLAIN LOGIN</code>
<code>安裝Courier-Authlib:</code>
<code># tar jxvf courier-authlib-0.62.4.tar.bz2</code>
<code># cd courier-authlib-0.62.4</code>
<code># ./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --without-authuserdb --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql --without-authcustom --with-authmysql --with-redhat</code>
<code># make</code>
<code># make install</code>
<code># make install-configure</code>
<code># echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf</code>
<code># ldconfig</code>
<code># ldconfig -v | grep courier</code>
<code>/usr/local/courier-authlib/lib/courier-authlib</code><code>:</code>
<code> </code><code>libcourierauthsasl.so -> libcourierauthsasl.so.0</code>
<code> </code><code>libcourierauthsaslclient.so -> libcourierauthsaslclient.so.0</code>
<code> </code><code>libcourierauth.so -> libcourierauth.so.0</code>
<code> </code><code>libcourierauthcommon.so -> libcourierauthcommon.so.0</code>
<code># cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib</code>
<code># chmod 755 /etc/rc.d/init.d/courier-authlib</code>
<code># chkconfig --add courier-authlib</code>
<code># chkconfig courier-authlib on</code>
<code># chmod 755 /usr/local/courier-authlib/var/spool/authdaemon/</code>
<code># cp /usr/local/courier-authlib/etc/authlib/authmysqlrc /usr/local/courier-authlib/etc/authlib/authmysqlrc.bak</code>
<code># vi /usr/local/courier-authlib/etc/authlib/authmysqlrc</code>
<code>MYSQL_SERVER 127.0.0.1</code>
<code>MYSQL_USERNAME extmail</code>
<code>MYSQL_PASSWORD extmail</code>
<code>MYSQL_SOCKET </code><code>/var/lib/mysql/mysql</code><code>.sock</code>
<code>MYSQL_PORT 3306</code>
<code>MYSQL_OPT 0</code>
<code>MYSQL_DATABASE extmail</code>
<code>MYSQL_USER_TABLE mailbox</code>
<code>MYSQL_CRYPT_PWFIELD password</code>
<code>MYSQL_UID_FIELD 1000</code>
<code>MYSQL_GID_FIELD 1000</code>
<code>MYSQL_LOGIN_FIELD username</code>
<code>MYSQL_HOME_FIELD concat(</code><code>'/var/maildata/domains/'</code><code>,homedir)</code>
<code>MYSQL_NAME_FIELD name</code>
<code>MYSQL_MAILDIR_FIELD concat(</code><code>'/var/maildata/domains/'</code><code>,maildir)</code>
<code># vi /usr/local/courier-authlib/etc/authlib/authdaemonrc</code>
<code>authmodulelist=</code><code>"authmysql"</code>
<code>authmodulelistorig=</code><code>"authmysql"</code>
<code>daemons=10</code>
<code>authdaemonvar=</code><code>/usr/local/courier-authlib/var/spool/authdaemon</code>
<code>DEBUG_LOGIN=0</code>
<code>DEFAULTOPTIONS=</code><code>""</code>
<code>LOGGEROPTS=</code><code>""</code>
<code># service courier-authlib start</code>
<code>Starting Courier authentication services: authdaemond</code>
<code># ps -ef | grep authdaemond | grep -v grep</code>
<code>root 9173 1 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/sbin/courierlogger</code> <code>-pid=</code><code>/usr/local/courier-authlib/var/spool/authdaemon/pid</code> <code>-start </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9174 9173 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9175 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9176 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9177 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9178 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9179 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9180 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9181 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9182 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9183 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code>root 9184 9174 0 02:50 ? 00:00:00 </code><code>/usr/local/courier-authlib/libexec/courier-authlib/authdaemond</code>
<code># vi /usr/lib64/sasl2/smtpd.conf</code>
<code>pwcheck_method: authdaemond</code>
<code>log_level: 3</code>
<code>mech_list:PLAIN LOGIN</code>
<code>authdaemond_path:</code><code>/usr/local/courier-authlib/var/spool/authdaemon/socket</code>
<code># groupadd -g 1000 vgroup</code>
<code># useradd -g 1000 -u 1000 -s /sbin/nologin -M vuser</code>
<code># tar jxvf maildrop-2.2.0.tar.bz2</code>
<code># cd maildrop-2.2.0/</code>
<code># ./configure --enable-sendmail=/usr/sbin/sendmail --enable-trusted-users='root vuser' --enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=1000 --enable-maildrop-gid=1000 --with-trashquota --with-dirsync</code>
<code># make && make install</code>
<code># vi /etc/postfix/master.cf</code>
<code>maildrop unix - n n - - pipe</code>
<code> </code><code>flags=DRhu user=vuser argv=</code><code>/usr/local/bin/maildrop</code> <code>-w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}</code>
<code>//flags</code><code>前面有</code><code>"兩個空格"</code>
<code>maildrop_destination_recipient_limit = 1</code>
<code># maildrop -v //測試maildrop對authlib支援</code>
<code>maildrop 2.1.0 Copyright 1998-2005 Double Precision, Inc.</code>
<code>GDBM</code><code>/DB</code> <code>extensions enabled.</code>
<code>Maildir </code><code>quota</code> <code>extension enabled.</code>
<code>This program is distributed under the terms of the GNU General Public</code>
<code>License. See COPYING </code><code>for</code> <code>additional information.</code>
如果maildrop使用RPM包安裝時,會自動建立vuser使用者及vgroup使用者組,專門用于郵件的存儲,vuser:vgroup的uid/gid都是1000,這與一般的郵件文檔中提及用postfix使用者存郵件不一樣。因為postfix使用者的uid一般都低于500,而Suexec子產品編譯時對UID/GID的要求是要大于500,是以使用postfix使用者不能滿足要求。其次,如果用Maildrop作為投遞代理(MDA),以postfix身份投遞的話,會導緻postfix MTA錯誤。
本文轉自Vnimos51CTO部落格,原文連結:http://blog.51cto.com/vnimos/1203162,如需轉載請自行聯系原作者