FreeBSD下安装postfixl邮件系统
生活随笔
收集整理的這篇文章主要介紹了
FreeBSD下安装postfixl邮件系统
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、首先安裝apache+mysql+php,
???????? 在本文檔中假設(shè)服務(wù)器的ip地址為172.16.27.23,域名為test.com,主機(jī)名為mail.test.com
?? 二、安裝courier-imap,courier-imap主要提供Pop3及IMAP服務(wù)。
??????1.ports安裝courier-imap
cd /usr/ports/mail/courier-imap
make install clean
????????選擇mysql
[X] AUTH_MYSQL?? MySQL support??????
???????? 2.在/etc/rc.conf 加入
courier_authdaemond_enable="YES"
courier_imap_pop3d_enable="YES"
courier_imap_imapd_enable="YES"
????????3.設(shè)置/usr/local/etc/authlib/authdaemonrc
cd /usr/local/etc/courier-imap
cp imapd.cnf.dist imapd.cnf
cp pop3d.cnf.dist pop3d.cnf
chmod -R??+x /var/run/authdaemond/
cd /usr/local/etc/authlib/
mv authdaemonrc authdaemonrc.bak
???? 編輯authdaemonrc文件,輸入如下內(nèi)容:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
version="authdaemond.mysql"
daemons=5
authdaemover=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=2
DEFAULTOPTIONS="wbnodsn=1"
???? 上面DEBUG_LOGIN=2 是為了調(diào)試方便,等系統(tǒng)完全測試完成,可改為 0,即不顯示調(diào)試信息。
/usr/local/etc/rc.d/courier-authdaemond start
????authdaemond 啟動完成后,檢查/var/run/authdaemond 下面是否產(chǎn)生socket 文件,因為認(rèn)證時是通過這個文件讀取密碼的。
??????
??????4.設(shè)置/usr/local/etc/authlib/authmysqlrc
cd /usr/local/etc/authlib/
mv authmysqlrc authmysqlrc.bak
?????? 創(chuàng)建authmysqlrc文件輸入以下內(nèi)容:
MYSQL_SERVER????????????localhost
MYSQL_USERNAME??????????extmail
MYSQL_PASSWORD??????????extmail
MYSQL_SOCKET????????????/tmp/mysql.sock
MYSQL_PORT??????????????3306
MYSQL_OPT?????????????? 0
MYSQL_DATABASE??????????extmail
MYSQL_USER_TABLE????????mailbox
MYSQL_CRYPT_PWFIELD???? password
MYSQL_UID_FIELD???????? 1000
MYSQL_GID_FIELD???????? 1000
MYSQL_LOGIN_FIELD?????? username
MYSQL_HOME_FIELD????????homedir
MYSQL_NAME_FIELD????????name
MYSQL_MAILDIR_FIELD???? maildir
MYSQL_QUOTA_FIELD?????? quota
MYSQL_SELECT_CLAUSE???? SELECT username,password,"",uidnumber,gidnumber,\
????????????????????????CONCAT('/services/data/domains/',homedir),?????? \
????????????????????????CONCAT('/services/data/domains/',maildir),??????\
????????????????????????quota,??????????????????????????????????????????\
????????????????????????name????????????????????????????????????????????\
????????????????????????FROM mailbox????????????????????????????????????\
????????????????????????WHERE username = '$(local_part)@$(domain)'
????要注意,我的郵件保存的目錄是/services/data/domains ,你可以跟據(jù)你的需要改為自己的目錄。用戶名和密碼是extmail 這個具體需要看extman 軟件包中的docs 目錄中的extmail.sql,很多人無法通上發(fā)信認(rèn)證,很可能以上面兩個文件配置有關(guān)。
????????三、安裝配置cyrus-sasl2
???? 1.ports安裝cyrus-sasl2
cd /usr/ports/security/cyrus-sasl2
make install WITH_AUTHDAEMON=yes
make clean
????2.創(chuàng)建 /usr/local/lib/sasl2/smtpd.conf 加入下面的內(nèi)容
pwcheck_method:authdaemond
log_level:3
mech_list:PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket
????至此,認(rèn)證部分基本完成。
???????? 四、安裝配置Postfix
????????
????1.ports安裝postfix
cd /usr/ports/mail/postfix
make install clean
????2.編譯選項選擇
[X] VDA?????? VDA (Virtual Delivery Agent)
[X] MySQL???? MySQL map lookups (choose version with WITH_MYSQL_VER)
[X] TLS?????? SSL and TLS
[X] SASL2???? Cyrus SASLv2 (Simple Authentication and Security Layer)
安裝過程中有兩個提問,直接按回車,使用系統(tǒng)默認(rèn)的回答。
?? 3.配置postfix
echo postfix:root >> /etc/aliases
/usr/local/bin/newaliases
ln -s /usr/local/sbin/sendmail /usr/sbin/sendmail
???? 如果出現(xiàn)ln: /usr/sbin/sendmail: File exists 提示,把/usr/sbin/sendmail改名再鏈接。
????設(shè)置postfix 隨系統(tǒng)啟動,在/etc/rc.conf中添加如下內(nèi)容:
postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
??????創(chuàng)建/etc/periodic.conf 加入下面的內(nèi)容:
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
?? 配置/usr/local/etc/postfix/main.cf
cd /usr/local/etc/postfix/
mv main.cf main.cf.bak
????創(chuàng)建main.cf文件輸入如下內(nèi)容:
###################BASE##################
myhostname=mail.test.com
mydomain = test.com
mydestination = $myhostname
#mydestination =
local_recipient_maps =
command_directory = /usr/local/sbin
#local_transport = virtual
smtpd_banner = test.com ESMTP Mail System
message_size_limit = 14680064
#mailbox_size_limit = 512000000
#################MySQL################
virtual_alias_maps =mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
#virtual_gid_maps = static:125
#virtual_gid_maps = static:1000
virtual_mailbox_base = /services/data/domains
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
#virtual_mailbox_limit = 512000000
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
#virtual_minimum_uid = 125
#virtual_minimum_uid = 1000
#virtual_transport = virtual
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
strict_rfc821_envelopes = no
#virtual_uid_maps = static:125
#virtual_uid_maps = static:1000
################Quota################
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry,the user's Maildir has overdrawn his diskspace quota ,please tray again later.
virtual_overquota_bounce = yes
##############SASL####################
smtpd_sasl_auth_enable = yes
smtpd_sasl2_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
??permit_mynetworks,
??permit_sasl_authenticated,
??reject_unauth_destination,
??reject_unauth_pipelining,
??reject_invalid_hostname,
readme_directory = no
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
html_directory = no
setgid_group = maildrop
manpage_directory = /usr/local/man
daemon_directory = /usr/local/libexec/postfix
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
????以下幾個文件在extman軟件包的docs目錄下直接拷到/usr/local/etc/postfix下即可
mysql_virtual_alias_maps.cf
mysql_virtual_domains_maps.cf
mysql_virtual_limit_maps.cf
mysql_virtual_mailbox_maps.cf
mysql_virtual_sender_maps.cf
?? 至此postfix 基本設(shè)置完成,但還不能收發(fā)郵件。
?? 五、安裝配置maildrop
??????我們在設(shè)置郵件服務(wù)器時MTA 部分還是使用posfix 本身的帳戶進(jìn)行處理郵件,由于maildrop 不能和postfix 與同一用戶身份處理郵件,所以我們新開一個用戶用戶maildrop 處理。
pw groupadd vgroup -g 1000
pw useradd vuser -g 1000 -u 1000 -s /sbin/nologin -d /sbin/nologin -c "virtual mail user"
???? 1.ports安裝maildrop
cd /usr/ports/mail/maildrop
make install WITH_AUTHLIB=yes
???? 選擇
[X] AUTH_MYSQL?? MySQL support
make clean
????2.配置maildrop
?? 修改/usr/local/etc/postfix/master.cf ,把maildrop 原先已有的記錄注譯(即刪除舊記錄),加上下面的內(nèi)容
maildrop??unix??-?????? n?????? n?????? -?????? -?????? pipe
??flags=DRhu user=vuser argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} ${nexthop}
????3.設(shè)置郵件存儲目錄
mkdir -p /services/data/domains/test.com/test
chown -R 1000:1000 /services/data/domains/
chmod -R 700 /services/data
???? 確保data目錄為700權(quán)限以及所屬的用戶和組為vuser和vgroup
??至此,我們的郵件系統(tǒng)基礎(chǔ)部分已經(jīng)安裝完成了。重啟系統(tǒng),開始進(jìn)行測試。
????六、安裝extmail和extman
????
??????1.解壓extmail和extman
tar xzvf extmail-1.2.tar.gz
tar xzvf extman-1.1.tar.gz
mkdir -p /services/extsuite
mv extman-1.1 /services/extsuite/extman
mv extmail-1.2 /services/extsuite/extmail
????2.修改httpd.conf文件,在末尾增加如下內(nèi)容:
<VirtualHost *:80>
????ServerName 172.16.27.23
????DocumentRoot /services/extsuite/extmail/html
????ScriptAlias /extmail/cgi /services/extsuite/extmail/cgi
????Alias /extmail /services/extsuite/extmail/html
????<Directory "/services/extsuite/extmail">
????Options ExecCGI
????AllowOverride None
????Order allow,deny
????Allow from all
????</Directory>
????#SuexecUserGroup postfix postfix
</VirtualHost>
#<VirtualHost *:80>
????DocumentRoot /services/extsuite/extman/html
????ScriptAlias /extman/cgi /services/extsuite/extman/cgi
????Alias /extman /services/extsuite/extman/html
????<Directory "/services/extsuite/extman">
#???? Options ExecCGI
????AllowOverride None
????Order allow,deny
????Allow from all
????</Directory>
#</VirtualHost>
????
????用戶和組修改為
User vuser
Group vgroup
?? 3.配置webman.cf和webmail.cf
????修改/services/extsuite/extman/webman.cf文件,參考內(nèi)容如下:
SYS_CONFIG = /services/extsuite/extman/
SYS_LANGDIR = /services/extsuite/extman/lang
SYS_TEMPLDIR = /services/extsuite/extman/html
SYS_MAILDIR_BASE = /services/data/domains
SYS_SHOW_WARN = 0
SYS_SESS_DIR = /var/tmp/extman/
SYS_CAPTCHA_ON = 0
SYS_CAPTCHA_KEY = r3s9b6a7
SYS_CAPTCHA_LEN = 6
SYS_PURGE_DATA = 0
SYS_PSIZE = 20
SYS_APP_TYPE = ExtMan
SYS_TEMPLATE_NAME = default
SYS_DEFAULT_EXPIRE = 1y
SYS_GROUPMAIL_SENDER = postmaster@test.com
SYS_DEFAULT_SERVICES = webmail,smtpd,smtp,pop3,netdisk
SYS_ISP_MODE = no
SYS_DOMAIN_HASHDIR = yes
SYS_DOMAIN_HASHDIR_DEPTH = 2x2
SYS_USER_HASHDIR = yes
SYS_USER_HASHDIR_DEPTH = 2x2
SYS_MIN_UID = 500
SYS_MIN_GID = 100
SYS_DEFAULT_UID = 1000
SYS_DEFAULT_GID = 1000
SYS_QUOTA_MULTIPLIER = 1048576
SYS_QUOTA_TYPE = courier
SYS_DEFAULT_MAXQUOTA = 500
SYS_DEFAULT_MAXALIAS = 100
SYS_DEFAULT_MAXUSERS = 100
SYS_DEFAULT_MAXNDQUOTA = 500
SYS_USER_DEFAULT_QUOTA = 5
SYS_USER_DEFAULT_NDQUOTA = 5
SYS_USER_DEFAULT_EXPIRE = 1y
SYS_BACKEND_TYPE = mysql
SYS_CRYPT_TYPE = md5crypt
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = manager
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_PASSWD = password
SYS_LDAP_BASE = dc=test.com
SYS_LDAP_RDN = cn=Manager,dc=test.com
SYS_LDAP_PASS = secret
SYS_LDAP_HOST = localhost
SYS_LDAP_ATTR_USERNAME = mail
SYS_LDAP_ATTR_PASSWD = userPassword
SYS_RRD_DATADIR = /var/lib
SYS_RRD_TMPDIR = /tmp/viewlog
?? 修改/services/extsuite/extmail/webmail.cf文件,參考內(nèi)容如下:
SYS_CONFIG = /services/extsuite/extmail/
SYS_LANGDIR = /services/extsuite/extmail/lang
SYS_TEMPLDIR = /services/extsuite/extmail/html
SYS_HTTP_CACHE = 0
SYS_SMTP_HOST = 127.0.0.1
SYS_SMTP_PORT = 25
SYS_SMTP_TIMEOUT = 5
SYS_SPAM_REPORT_ON = 0
SYS_SPAM_REPORT_TYPE = dspam
SYS_SHOW_WARN = 0
SYS_PERMIT_NOQUOTA = 1
SYS_SESS_DIR = /tmp
SYS_UPLOAD_TMPDIR = /tmp
SYS_LOG_ON = 1
SYS_LOG_TYPE = syslog
SYS_LOG_FILE = /var/log/extmail.log
SYS_SESS_TIMEOUT = 0
SYS_SESS_COOKIE_ONLY = 1
SYS_USER_PSIZE = 10
SYS_USER_SCREEN = auto
SYS_USER_LANG = zh_US
SYS_APP_TYPE = WebMail
SYS_USER_TEMPLATE = default
SYS_USER_CHARSET = utf-8
SYS_USER_TRYLOCAL = 1
SYS_USER_TIMEZONE = +0800
SYS_USER_CCSENT = 1
SYS_USER_SHOW_HTML = 1
SYS_USER_COMPOSE_HTML = 1
SYS_USER_CONV_LINK =1
SYS_USER_ADDR2ABOOK = 1
SYS_MESSAGE_SIZE_LIMIT = 5242880
SYS_MIN_PASS_LEN = 2
SYS_MFILTER_ON = 1
SYS_NETDISK_ON = 1
SYS_SHOW_SIGNUP = 1
SYS_DEBUG_ON = 1
SYS_AUTH_TYPE = mysql
SYS_MAILDIR_BASE = /services/data/domains
SYS_AUTH_SCHEMA = virtual
SYS_CRYPT_TYPE = md5crypt
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
SYS_MYSQL_ATTR_CLEARPW = clearpwd
SYS_MYSQL_ATTR_QUOTA = quota
SYS_MYSQL_ATTR_NDQUOTA = netdiskquota
SYS_MYSQL_ATTR_HOME = homedir
SYS_MYSQL_ATTR_MAILDIR = maildir
SYS_MYSQL_ATTR_DISABLEWEBMAIL = disablewebmail
SYS_MYSQL_ATTR_DISABLENETDISK = disablenetdisk
SYS_MYSQL_ATTR_DISABLEPWDCHANGE = disablepwdchange
SYS_MYSQL_ATTR_ACTIVE = active
SYS_MYSQL_ATTR_PWD_QUESTION = question
SYS_MYSQL_ATTR_PWD_ANSWER = answer
SYS_LDAP_BASE = o=extmailAccount,dc=test.com
SYS_LDAP_RDN = cn=Manager,dc=test.com
SYS_LDAP_PASS = secret
SYS_LDAP_HOST = localhost
SYS_LDAP_ATTR_USERNAME = mail
SYS_LDAP_ATTR_DOMAIN = virtualDomain
SYS_LDAP_ATTR_PASSWD = userPassword
SYS_LDAP_ATTR_CLEARPW = clearPassword
SYS_LDAP_ATTR_QUOTA = mailQuota
SYS_LDAP_ATTR_NDQUOTA = netdiskQuota
SYS_LDAP_ATTR_HOME = homedir
SYS_LDAP_ATTR_MAILDIR = maildir
SYS_LDAP_ATTR_DISABLENETDISK = disablenetdisk
SYS_LDAP_ATTR_DISABLEPWDCHANGE = disablePasswdChange
SYS_LDAP_ATTR_ACTIVE = active
SYS_LDAP_ATTR_PWD_QUESTION = question
SYS_LDAP_ATTR_PWD_ANSWER = answer
SYS_AUTHLIB_SOCKET = /var/run/authdaemon/socket
SYS_G_ABOOK_TYPE = file
SYS_G_ABOOK_LDAP_HOST = localhost
SYS_G_ABOOK_LDAP_BASE = ou=AddressBook,dc=test.com
SYS_G_ABOOK_LDAP_ROOTDN = cn=Manager,dc=test.com
SYS_G_ABOOK_LDAP_ROOTPW = secret
SYS_G_ABOOK_LDAP_FILTER = objectClass=OfficePerson
SYS_G_ABOOK_FILE_PATH = /services/extsuite/extmail/globabook.cf
SYS_G_ABOOK_FILE_LOCK = 1
SYS_G_ABOOK_FILE_CONVERT = 0
SYS_G_ABOOK_FILE_CHARSET = utf-8
????初始化extmail數(shù)據(jù)庫,將/services/extsuite/extman/docs/init.sql中
mysql -uroot -p123456 < /services/extsuite/extman/docs/extmail.sql
mysql -uroot -p123456 < /services/extsuite/extman/docs/init.sql
????重啟apache,登錄web郵件系統(tǒng)http://172.16.27.23,出現(xiàn)如下錯誤
Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext::Logger::do_closelog called at /services/extsuite/extmail/libs/Ext/Logger.pm line 86. ??
?? ports安裝p5-Unix-Syslog
cd /usr/ports/sysutils/p5-Unix-Syslog
make install clean
??重新登錄,問題解決.
??
??進(jìn)入http://172.16.27.23/extman出現(xiàn):
Can't locate DBI.pm in @INC (@INC contains: /services/extsuite/extman/libs /usr/local/lib/perl5/5.10.1/BSDPAN /usr/local/lib/perl5/site_perl/5.10.1/mach /usr/local/lib/perl5/site_perl/5.10.1 /usr/local/lib/perl5/5.10.1/mach /usr/local/lib/perl5/5.10.1 .) at /services/extsuite/extman/libs/Ext/Mgr/MySQL.pm line 13. BEGIN failed--compilation aborted at /services/extsuite/extman/libs/Ext/Mgr/MySQL.pm line 13. Compilation failed in require at /services/extsuite/extman/libs/Ext/Mgr.pm line 37.
??????解決辦法安裝,ports安裝p5-DBD-mysql
cd /usr/ports/databases/p5-DBD-mysql
make install clean
????出現(xiàn)下列錯誤解決辦法:
Can't open /var/tmp/extman//sid_26da75f9aec35f2cbc6b4fa425ab525e, No such file or directory
mkdir /var/tmp/extman
chmor-R 777 /var/tmp/extman????
???? 重新登錄,問題解決.
?????? 七、測試郵件系統(tǒng)
?? 1.進(jìn)入 http://172.16.27.23/extman root@extmail.org默認(rèn)的密碼是extmail*123*,添加一個域test.com
?? 2.進(jìn)入 http://172.16.27.23 注冊新用戶
?? 3.安裝p5-MIME-Base64
cd /usr/ports/converters/p5-MIME-Base64/
make install clean
????4.通過p5-MIME-Base64來取得用戶名和密碼的base64編碼
perl -MMIME::Base64 -e 'print encode_base64("wq1\@test.com");'
d3ExQHRlc3QuY29t
perl -MMIME::Base64 -e 'print encode_base64("wq1");'
d3Ex
????5.測試發(fā)送郵件(端口:25):
#telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 test.com ESMTP Mail System
ehlo mail.test.com
250-mail.test.com
250-PIPELINING
250-SIZE 14680064
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
d3ExQHRlc3QuY29t?????????? //此用戶名為:wq1@test.com
334 UGFzc3dvcmQ6
d3Ex?????????????????????????????? //此用戶密碼為:wq1
235 2.7.0 Authentication successful?? //驗證成功
MAIL FROM:<wq1@test.com>?? //告訴服務(wù)器發(fā)信人Email地址
250 2.1.0 Ok
RCPT TO:<wq2@test.com> //告訴收信人Email地址
250 2.1.5 Ok
DATA????????????????????????//告訴服務(wù)器開始寫信
354 End data with <CR><LF>.<CR><LF>
SUBJECT:test2??????????//SUBJECT后面是郵件主題
test???????????????????????? //郵件正文
.??????????????????????????????//換行后輸入.后按回車,表示信件內(nèi)容書寫完畢
250 2.0.0 Ok: queued as 42FB742CB
quit
221 2.0.0 Bye
Connection closed by foreign host.
??????6.測試收取郵件(端口:110):
# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user wq2@test.com
+OK Password required.
pass wq2
+OK logged in.
list
+OK POP3 clients that break here, they violate STD53.
1 397
.
retr 1????????????????????????//返回第一封信的全部內(nèi)容
+OK 397 octets follow.
Return-Path: <wq1@test.com>
Delivered-To: wq2@test.com
Received: from mail.test.com (localhost [127.0.0.1])
????????by mail.test.com (Postfix) with ESMTPA id 7254842CB
????????for <wq2@test.com> Wed,??9 Mar 2011 11:12:20 +0800 (CST)
SUBJECT:test2
Message-Id: <20110309031256.7254842CB@mail.test.com>
Date: Wed,??9 Mar 2011 11:12:20 +0800 (CST)
From: wq1@test.com
To: undisclosed-recipients:;
test
.
dele 1???????????? //刪除第一封信
+OK Deleted.
quit
+OK Bye-bye.
Connection closed by foreign host.
至此,一個簡單的郵件服務(wù)器搭建完畢。
???????? 在本文檔中假設(shè)服務(wù)器的ip地址為172.16.27.23,域名為test.com,主機(jī)名為mail.test.com
?? 二、安裝courier-imap,courier-imap主要提供Pop3及IMAP服務(wù)。
??????1.ports安裝courier-imap
cd /usr/ports/mail/courier-imap
make install clean
????????選擇mysql
[X] AUTH_MYSQL?? MySQL support??????
???????? 2.在/etc/rc.conf 加入
courier_authdaemond_enable="YES"
courier_imap_pop3d_enable="YES"
courier_imap_imapd_enable="YES"
????????3.設(shè)置/usr/local/etc/authlib/authdaemonrc
cd /usr/local/etc/courier-imap
cp imapd.cnf.dist imapd.cnf
cp pop3d.cnf.dist pop3d.cnf
chmod -R??+x /var/run/authdaemond/
cd /usr/local/etc/authlib/
mv authdaemonrc authdaemonrc.bak
???? 編輯authdaemonrc文件,輸入如下內(nèi)容:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
version="authdaemond.mysql"
daemons=5
authdaemover=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=2
DEFAULTOPTIONS="wbnodsn=1"
???? 上面DEBUG_LOGIN=2 是為了調(diào)試方便,等系統(tǒng)完全測試完成,可改為 0,即不顯示調(diào)試信息。
/usr/local/etc/rc.d/courier-authdaemond start
????authdaemond 啟動完成后,檢查/var/run/authdaemond 下面是否產(chǎn)生socket 文件,因為認(rèn)證時是通過這個文件讀取密碼的。
??????
??????4.設(shè)置/usr/local/etc/authlib/authmysqlrc
cd /usr/local/etc/authlib/
mv authmysqlrc authmysqlrc.bak
?????? 創(chuàng)建authmysqlrc文件輸入以下內(nèi)容:
MYSQL_SERVER????????????localhost
MYSQL_USERNAME??????????extmail
MYSQL_PASSWORD??????????extmail
MYSQL_SOCKET????????????/tmp/mysql.sock
MYSQL_PORT??????????????3306
MYSQL_OPT?????????????? 0
MYSQL_DATABASE??????????extmail
MYSQL_USER_TABLE????????mailbox
MYSQL_CRYPT_PWFIELD???? password
MYSQL_UID_FIELD???????? 1000
MYSQL_GID_FIELD???????? 1000
MYSQL_LOGIN_FIELD?????? username
MYSQL_HOME_FIELD????????homedir
MYSQL_NAME_FIELD????????name
MYSQL_MAILDIR_FIELD???? maildir
MYSQL_QUOTA_FIELD?????? quota
MYSQL_SELECT_CLAUSE???? SELECT username,password,"",uidnumber,gidnumber,\
????????????????????????CONCAT('/services/data/domains/',homedir),?????? \
????????????????????????CONCAT('/services/data/domains/',maildir),??????\
????????????????????????quota,??????????????????????????????????????????\
????????????????????????name????????????????????????????????????????????\
????????????????????????FROM mailbox????????????????????????????????????\
????????????????????????WHERE username = '$(local_part)@$(domain)'
????要注意,我的郵件保存的目錄是/services/data/domains ,你可以跟據(jù)你的需要改為自己的目錄。用戶名和密碼是extmail 這個具體需要看extman 軟件包中的docs 目錄中的extmail.sql,很多人無法通上發(fā)信認(rèn)證,很可能以上面兩個文件配置有關(guān)。
????????三、安裝配置cyrus-sasl2
???? 1.ports安裝cyrus-sasl2
cd /usr/ports/security/cyrus-sasl2
make install WITH_AUTHDAEMON=yes
make clean
????2.創(chuàng)建 /usr/local/lib/sasl2/smtpd.conf 加入下面的內(nèi)容
pwcheck_method:authdaemond
log_level:3
mech_list:PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket
????至此,認(rèn)證部分基本完成。
???????? 四、安裝配置Postfix
????????
????1.ports安裝postfix
cd /usr/ports/mail/postfix
make install clean
????2.編譯選項選擇
[X] VDA?????? VDA (Virtual Delivery Agent)
[X] MySQL???? MySQL map lookups (choose version with WITH_MYSQL_VER)
[X] TLS?????? SSL and TLS
[X] SASL2???? Cyrus SASLv2 (Simple Authentication and Security Layer)
安裝過程中有兩個提問,直接按回車,使用系統(tǒng)默認(rèn)的回答。
?? 3.配置postfix
echo postfix:root >> /etc/aliases
/usr/local/bin/newaliases
ln -s /usr/local/sbin/sendmail /usr/sbin/sendmail
???? 如果出現(xiàn)ln: /usr/sbin/sendmail: File exists 提示,把/usr/sbin/sendmail改名再鏈接。
????設(shè)置postfix 隨系統(tǒng)啟動,在/etc/rc.conf中添加如下內(nèi)容:
postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
??????創(chuàng)建/etc/periodic.conf 加入下面的內(nèi)容:
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
?? 配置/usr/local/etc/postfix/main.cf
cd /usr/local/etc/postfix/
mv main.cf main.cf.bak
????創(chuàng)建main.cf文件輸入如下內(nèi)容:
###################BASE##################
myhostname=mail.test.com
mydomain = test.com
mydestination = $myhostname
#mydestination =
local_recipient_maps =
command_directory = /usr/local/sbin
#local_transport = virtual
smtpd_banner = test.com ESMTP Mail System
message_size_limit = 14680064
#mailbox_size_limit = 512000000
#################MySQL################
virtual_alias_maps =mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
#virtual_gid_maps = static:125
#virtual_gid_maps = static:1000
virtual_mailbox_base = /services/data/domains
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
#virtual_mailbox_limit = 512000000
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
#virtual_minimum_uid = 125
#virtual_minimum_uid = 1000
#virtual_transport = virtual
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
strict_rfc821_envelopes = no
#virtual_uid_maps = static:125
#virtual_uid_maps = static:1000
################Quota################
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry,the user's Maildir has overdrawn his diskspace quota ,please tray again later.
virtual_overquota_bounce = yes
##############SASL####################
smtpd_sasl_auth_enable = yes
smtpd_sasl2_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
??permit_mynetworks,
??permit_sasl_authenticated,
??reject_unauth_destination,
??reject_unauth_pipelining,
??reject_invalid_hostname,
readme_directory = no
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
html_directory = no
setgid_group = maildrop
manpage_directory = /usr/local/man
daemon_directory = /usr/local/libexec/postfix
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
????以下幾個文件在extman軟件包的docs目錄下直接拷到/usr/local/etc/postfix下即可
mysql_virtual_alias_maps.cf
mysql_virtual_domains_maps.cf
mysql_virtual_limit_maps.cf
mysql_virtual_mailbox_maps.cf
mysql_virtual_sender_maps.cf
?? 至此postfix 基本設(shè)置完成,但還不能收發(fā)郵件。
?? 五、安裝配置maildrop
??????我們在設(shè)置郵件服務(wù)器時MTA 部分還是使用posfix 本身的帳戶進(jìn)行處理郵件,由于maildrop 不能和postfix 與同一用戶身份處理郵件,所以我們新開一個用戶用戶maildrop 處理。
pw groupadd vgroup -g 1000
pw useradd vuser -g 1000 -u 1000 -s /sbin/nologin -d /sbin/nologin -c "virtual mail user"
???? 1.ports安裝maildrop
cd /usr/ports/mail/maildrop
make install WITH_AUTHLIB=yes
???? 選擇
[X] AUTH_MYSQL?? MySQL support
make clean
????2.配置maildrop
?? 修改/usr/local/etc/postfix/master.cf ,把maildrop 原先已有的記錄注譯(即刪除舊記錄),加上下面的內(nèi)容
maildrop??unix??-?????? n?????? n?????? -?????? -?????? pipe
??flags=DRhu user=vuser argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} ${nexthop}
????3.設(shè)置郵件存儲目錄
mkdir -p /services/data/domains/test.com/test
chown -R 1000:1000 /services/data/domains/
chmod -R 700 /services/data
???? 確保data目錄為700權(quán)限以及所屬的用戶和組為vuser和vgroup
??至此,我們的郵件系統(tǒng)基礎(chǔ)部分已經(jīng)安裝完成了。重啟系統(tǒng),開始進(jìn)行測試。
????六、安裝extmail和extman
????
??????1.解壓extmail和extman
tar xzvf extmail-1.2.tar.gz
tar xzvf extman-1.1.tar.gz
mkdir -p /services/extsuite
mv extman-1.1 /services/extsuite/extman
mv extmail-1.2 /services/extsuite/extmail
????2.修改httpd.conf文件,在末尾增加如下內(nèi)容:
<VirtualHost *:80>
????ServerName 172.16.27.23
????DocumentRoot /services/extsuite/extmail/html
????ScriptAlias /extmail/cgi /services/extsuite/extmail/cgi
????Alias /extmail /services/extsuite/extmail/html
????<Directory "/services/extsuite/extmail">
????Options ExecCGI
????AllowOverride None
????Order allow,deny
????Allow from all
????</Directory>
????#SuexecUserGroup postfix postfix
</VirtualHost>
#<VirtualHost *:80>
????DocumentRoot /services/extsuite/extman/html
????ScriptAlias /extman/cgi /services/extsuite/extman/cgi
????Alias /extman /services/extsuite/extman/html
????<Directory "/services/extsuite/extman">
#???? Options ExecCGI
????AllowOverride None
????Order allow,deny
????Allow from all
????</Directory>
#</VirtualHost>
????
????用戶和組修改為
User vuser
Group vgroup
?? 3.配置webman.cf和webmail.cf
????修改/services/extsuite/extman/webman.cf文件,參考內(nèi)容如下:
SYS_CONFIG = /services/extsuite/extman/
SYS_LANGDIR = /services/extsuite/extman/lang
SYS_TEMPLDIR = /services/extsuite/extman/html
SYS_MAILDIR_BASE = /services/data/domains
SYS_SHOW_WARN = 0
SYS_SESS_DIR = /var/tmp/extman/
SYS_CAPTCHA_ON = 0
SYS_CAPTCHA_KEY = r3s9b6a7
SYS_CAPTCHA_LEN = 6
SYS_PURGE_DATA = 0
SYS_PSIZE = 20
SYS_APP_TYPE = ExtMan
SYS_TEMPLATE_NAME = default
SYS_DEFAULT_EXPIRE = 1y
SYS_GROUPMAIL_SENDER = postmaster@test.com
SYS_DEFAULT_SERVICES = webmail,smtpd,smtp,pop3,netdisk
SYS_ISP_MODE = no
SYS_DOMAIN_HASHDIR = yes
SYS_DOMAIN_HASHDIR_DEPTH = 2x2
SYS_USER_HASHDIR = yes
SYS_USER_HASHDIR_DEPTH = 2x2
SYS_MIN_UID = 500
SYS_MIN_GID = 100
SYS_DEFAULT_UID = 1000
SYS_DEFAULT_GID = 1000
SYS_QUOTA_MULTIPLIER = 1048576
SYS_QUOTA_TYPE = courier
SYS_DEFAULT_MAXQUOTA = 500
SYS_DEFAULT_MAXALIAS = 100
SYS_DEFAULT_MAXUSERS = 100
SYS_DEFAULT_MAXNDQUOTA = 500
SYS_USER_DEFAULT_QUOTA = 5
SYS_USER_DEFAULT_NDQUOTA = 5
SYS_USER_DEFAULT_EXPIRE = 1y
SYS_BACKEND_TYPE = mysql
SYS_CRYPT_TYPE = md5crypt
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = manager
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_PASSWD = password
SYS_LDAP_BASE = dc=test.com
SYS_LDAP_RDN = cn=Manager,dc=test.com
SYS_LDAP_PASS = secret
SYS_LDAP_HOST = localhost
SYS_LDAP_ATTR_USERNAME = mail
SYS_LDAP_ATTR_PASSWD = userPassword
SYS_RRD_DATADIR = /var/lib
SYS_RRD_TMPDIR = /tmp/viewlog
?? 修改/services/extsuite/extmail/webmail.cf文件,參考內(nèi)容如下:
SYS_CONFIG = /services/extsuite/extmail/
SYS_LANGDIR = /services/extsuite/extmail/lang
SYS_TEMPLDIR = /services/extsuite/extmail/html
SYS_HTTP_CACHE = 0
SYS_SMTP_HOST = 127.0.0.1
SYS_SMTP_PORT = 25
SYS_SMTP_TIMEOUT = 5
SYS_SPAM_REPORT_ON = 0
SYS_SPAM_REPORT_TYPE = dspam
SYS_SHOW_WARN = 0
SYS_PERMIT_NOQUOTA = 1
SYS_SESS_DIR = /tmp
SYS_UPLOAD_TMPDIR = /tmp
SYS_LOG_ON = 1
SYS_LOG_TYPE = syslog
SYS_LOG_FILE = /var/log/extmail.log
SYS_SESS_TIMEOUT = 0
SYS_SESS_COOKIE_ONLY = 1
SYS_USER_PSIZE = 10
SYS_USER_SCREEN = auto
SYS_USER_LANG = zh_US
SYS_APP_TYPE = WebMail
SYS_USER_TEMPLATE = default
SYS_USER_CHARSET = utf-8
SYS_USER_TRYLOCAL = 1
SYS_USER_TIMEZONE = +0800
SYS_USER_CCSENT = 1
SYS_USER_SHOW_HTML = 1
SYS_USER_COMPOSE_HTML = 1
SYS_USER_CONV_LINK =1
SYS_USER_ADDR2ABOOK = 1
SYS_MESSAGE_SIZE_LIMIT = 5242880
SYS_MIN_PASS_LEN = 2
SYS_MFILTER_ON = 1
SYS_NETDISK_ON = 1
SYS_SHOW_SIGNUP = 1
SYS_DEBUG_ON = 1
SYS_AUTH_TYPE = mysql
SYS_MAILDIR_BASE = /services/data/domains
SYS_AUTH_SCHEMA = virtual
SYS_CRYPT_TYPE = md5crypt
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
SYS_MYSQL_ATTR_CLEARPW = clearpwd
SYS_MYSQL_ATTR_QUOTA = quota
SYS_MYSQL_ATTR_NDQUOTA = netdiskquota
SYS_MYSQL_ATTR_HOME = homedir
SYS_MYSQL_ATTR_MAILDIR = maildir
SYS_MYSQL_ATTR_DISABLEWEBMAIL = disablewebmail
SYS_MYSQL_ATTR_DISABLENETDISK = disablenetdisk
SYS_MYSQL_ATTR_DISABLEPWDCHANGE = disablepwdchange
SYS_MYSQL_ATTR_ACTIVE = active
SYS_MYSQL_ATTR_PWD_QUESTION = question
SYS_MYSQL_ATTR_PWD_ANSWER = answer
SYS_LDAP_BASE = o=extmailAccount,dc=test.com
SYS_LDAP_RDN = cn=Manager,dc=test.com
SYS_LDAP_PASS = secret
SYS_LDAP_HOST = localhost
SYS_LDAP_ATTR_USERNAME = mail
SYS_LDAP_ATTR_DOMAIN = virtualDomain
SYS_LDAP_ATTR_PASSWD = userPassword
SYS_LDAP_ATTR_CLEARPW = clearPassword
SYS_LDAP_ATTR_QUOTA = mailQuota
SYS_LDAP_ATTR_NDQUOTA = netdiskQuota
SYS_LDAP_ATTR_HOME = homedir
SYS_LDAP_ATTR_MAILDIR = maildir
SYS_LDAP_ATTR_DISABLENETDISK = disablenetdisk
SYS_LDAP_ATTR_DISABLEPWDCHANGE = disablePasswdChange
SYS_LDAP_ATTR_ACTIVE = active
SYS_LDAP_ATTR_PWD_QUESTION = question
SYS_LDAP_ATTR_PWD_ANSWER = answer
SYS_AUTHLIB_SOCKET = /var/run/authdaemon/socket
SYS_G_ABOOK_TYPE = file
SYS_G_ABOOK_LDAP_HOST = localhost
SYS_G_ABOOK_LDAP_BASE = ou=AddressBook,dc=test.com
SYS_G_ABOOK_LDAP_ROOTDN = cn=Manager,dc=test.com
SYS_G_ABOOK_LDAP_ROOTPW = secret
SYS_G_ABOOK_LDAP_FILTER = objectClass=OfficePerson
SYS_G_ABOOK_FILE_PATH = /services/extsuite/extmail/globabook.cf
SYS_G_ABOOK_FILE_LOCK = 1
SYS_G_ABOOK_FILE_CONVERT = 0
SYS_G_ABOOK_FILE_CHARSET = utf-8
????初始化extmail數(shù)據(jù)庫,將/services/extsuite/extman/docs/init.sql中
mysql -uroot -p123456 < /services/extsuite/extman/docs/extmail.sql
mysql -uroot -p123456 < /services/extsuite/extman/docs/init.sql
????重啟apache,登錄web郵件系統(tǒng)http://172.16.27.23,出現(xiàn)如下錯誤
Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext::Logger::do_closelog called at /services/extsuite/extmail/libs/Ext/Logger.pm line 86. ??
?? ports安裝p5-Unix-Syslog
cd /usr/ports/sysutils/p5-Unix-Syslog
make install clean
??重新登錄,問題解決.
??
??進(jìn)入http://172.16.27.23/extman出現(xiàn):
Can't locate DBI.pm in @INC (@INC contains: /services/extsuite/extman/libs /usr/local/lib/perl5/5.10.1/BSDPAN /usr/local/lib/perl5/site_perl/5.10.1/mach /usr/local/lib/perl5/site_perl/5.10.1 /usr/local/lib/perl5/5.10.1/mach /usr/local/lib/perl5/5.10.1 .) at /services/extsuite/extman/libs/Ext/Mgr/MySQL.pm line 13. BEGIN failed--compilation aborted at /services/extsuite/extman/libs/Ext/Mgr/MySQL.pm line 13. Compilation failed in require at /services/extsuite/extman/libs/Ext/Mgr.pm line 37.
??????解決辦法安裝,ports安裝p5-DBD-mysql
cd /usr/ports/databases/p5-DBD-mysql
make install clean
????出現(xiàn)下列錯誤解決辦法:
Can't open /var/tmp/extman//sid_26da75f9aec35f2cbc6b4fa425ab525e, No such file or directory
mkdir /var/tmp/extman
chmor-R 777 /var/tmp/extman????
???? 重新登錄,問題解決.
?????? 七、測試郵件系統(tǒng)
?? 1.進(jìn)入 http://172.16.27.23/extman root@extmail.org默認(rèn)的密碼是extmail*123*,添加一個域test.com
?? 2.進(jìn)入 http://172.16.27.23 注冊新用戶
?? 3.安裝p5-MIME-Base64
cd /usr/ports/converters/p5-MIME-Base64/
make install clean
????4.通過p5-MIME-Base64來取得用戶名和密碼的base64編碼
perl -MMIME::Base64 -e 'print encode_base64("wq1\@test.com");'
d3ExQHRlc3QuY29t
perl -MMIME::Base64 -e 'print encode_base64("wq1");'
d3Ex
????5.測試發(fā)送郵件(端口:25):
#telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 test.com ESMTP Mail System
ehlo mail.test.com
250-mail.test.com
250-PIPELINING
250-SIZE 14680064
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
d3ExQHRlc3QuY29t?????????? //此用戶名為:wq1@test.com
334 UGFzc3dvcmQ6
d3Ex?????????????????????????????? //此用戶密碼為:wq1
235 2.7.0 Authentication successful?? //驗證成功
MAIL FROM:<wq1@test.com>?? //告訴服務(wù)器發(fā)信人Email地址
250 2.1.0 Ok
RCPT TO:<wq2@test.com> //告訴收信人Email地址
250 2.1.5 Ok
DATA????????????????????????//告訴服務(wù)器開始寫信
354 End data with <CR><LF>.<CR><LF>
SUBJECT:test2??????????//SUBJECT后面是郵件主題
test???????????????????????? //郵件正文
.??????????????????????????????//換行后輸入.后按回車,表示信件內(nèi)容書寫完畢
250 2.0.0 Ok: queued as 42FB742CB
quit
221 2.0.0 Bye
Connection closed by foreign host.
??????6.測試收取郵件(端口:110):
# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user wq2@test.com
+OK Password required.
pass wq2
+OK logged in.
list
+OK POP3 clients that break here, they violate STD53.
1 397
.
retr 1????????????????????????//返回第一封信的全部內(nèi)容
+OK 397 octets follow.
Return-Path: <wq1@test.com>
Delivered-To: wq2@test.com
Received: from mail.test.com (localhost [127.0.0.1])
????????by mail.test.com (Postfix) with ESMTPA id 7254842CB
????????for <wq2@test.com> Wed,??9 Mar 2011 11:12:20 +0800 (CST)
SUBJECT:test2
Message-Id: <20110309031256.7254842CB@mail.test.com>
Date: Wed,??9 Mar 2011 11:12:20 +0800 (CST)
From: wq1@test.com
To: undisclosed-recipients:;
test
.
dele 1???????????? //刪除第一封信
+OK Deleted.
quit
+OK Bye-bye.
Connection closed by foreign host.
至此,一個簡單的郵件服務(wù)器搭建完畢。
轉(zhuǎn)載于:https://blog.51cto.com/qq15570453/1161356
總結(jié)
以上是生活随笔為你收集整理的FreeBSD下安装postfixl邮件系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word文档中的文字如何直接变成繁体字
- 下一篇: 淘宝技术沙龙「系统稳定性与性能」的笔记与