分享

[原创-申请加精] postfix dovecot postfixadmin mysql认证

 大宝2338 2018-06-21
 [原创-申请加精] postfix+dovecot+postfixadmin+mysql认证前段时间在弄postfix邮局,碰到了很多问题,最后原因都是由于看的那些教程没有把细结部分写出来,导致初学问题多多,这里就把我的过程写出来,本文是通过结合了CU上各位前辈的一些文章总结配置成功而写的,供需要学习的同学参考

首先先装好apache+php+mysql

步骤这里不提了
需要安装以下软件:postfix(一款MTA),postfixadmin(管理邮局账号),cyrus-sasl(安全认证软件),dovecot(一款安全pop软件)

wget http:///releases/1.2/dovecot-1.2.9.tar.gz
wget http://urceforg[…]_2.3.tar.gz?use_mirror=nchc
wget ftp://ftp.andrew.cmu.edu/[…]/cyrus-sasl-2.1.23.tar.gz
wget ftp://ftp.cuhk.edu.hk/[…]/postfix-2.6.5.tar.gz


(1)安装postfixadmin

tar zxf postfixadmin_2.3.tar.gz
mv postfixadmin_2.3 /usr/local/wwwroot/postfix
cd /usr/local/wwwroot/postfix
cp config.inc.php.sample config.inc.php
vi config.inc.php

找这行$CONF['default_language'] = 'en';
改为$CONF['default_language'] = 'cn'; //让postfixadmin 支持中文
找到 $CONF['domain_in_mailbox'] = 'YES';
改为$CONF['domain_in_mailbox'] = 'NO'; // If you don't want to have the domain in your mailbox set this to 'NO'.
找到此行:$CONF['encrypt'] =
改为CONF['encrypt'] = 'cleartext'; //明文存入mysql

配置apache访问postfixadmin

vi /usr/local/apache/conf/httpd.conf

<VirtualHost *:80>
DocumentRoot /usr/local/wwwroot/postfix
<Directory "/usr/local/wwwroot/postfix">
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride None
AuthType Basic
authname Private
authuserfile /var/run/admin
require valid-user
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

生成认证文件

/usr/local/apache/bin/htpasswd -c /var/run/admin admin //其中/var/run/admin为文件名,最后http://www.的admin为用户名
ew password:
Re-type new password:
Adding password for user admin
输入两次密码后生成用户admin

添加mysql用户

create database postfix;
GRANT all privileges on postfix.* TO postfix@localhost IDENTIFIED BY 'PostFIX_1228';
flush privileges;

运行安装向导前需要安装php的imap扩展

先安装依赖包,否则会报错

yum -y install openssl openssl-devel pam pam-devel
wget ftp://ftp.cac.washington.edu/mail/imap.tar.Z
tar zxf imap.tar.z
cd imap-2007a
make lr5 PASSWDTYPE=std SSLTYPE=unix.nopwd IP6=4
echo "set disable-plaintext nil" > /etc/c-client.cf
mkdir /usr/local/imap-2007a
mkdir /usr/local/imap-2007a/include/
mkdir /usr/local/imap-2007a/lib/
chmod -R 077 /usr/local/imap-2007a
cp imapd/imapd /usr/sbin/
cp c-client/*.h /usr/local/imap-2007a/include/
cp c-client/*.c /usr/local/imap-2007a/lib/
cp c-client/c-client.a /usr/local/imap-2007a/lib/libc-client.a
cd /usr/local/src/php-5.2.10/ext/imap
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php-config --with-imap-ssl --with-imap=/usr/local/imap-2007a
make && make install

然后在php.ini中加入 extension = "imap.so"
重启apache
打开http://yourip/setup.php就可以开始postfixadmin的安装了,安装完后可以进行添加域和用户的操作,这里添加了域mail.abc.com,用户名lsm@mail.abc.com

(2)安装cyrus-sasl

tar zxf cyrus-sasl-2.1.23.tar.gz
cd cyrus-sasl
./configure --enable-login --enable-sql --with-mysql=/usr/local/mysql/
make && make install
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2

(3)

请教,SAMBA可写不可删是否有它法实现,急!!!

安装postfix

停用sendmail

service sendmail stop
chkconfig --level 345 sendmail off
mv /usr/bin/newaliases /usr/bin/newaliases.orig
mv /usr/bin/mailq /usr/bin/mailq.orig
mv /usr/sbin/sendmail /usr/sbin/sendmail.orig
groupadd -g 12345 postfix
useradd -u 12345 -g 12345 -c postfix -d /dev/null -s /bin/false postfix
groupadd -g 54321 postdrop

tar zxf postfix-2.6.5.tar.gz
cd postfix-2.6.5
make -f Makefile.init makefiles \
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include \
-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\"' \
'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'

make && make install

然后下一步下一步默认就可以

echo postfix: root >>/etc/aliases
newaliases

(4)安装配置dovecot

mkdir -p /data/mailbox
chown -R postfix.postfix /data/mailbox
useradd -d /dev/null -s /sbin/nologin dovecot
tar zxf dovecot-1.2.9.tar.gz
cd dovecot-1.2.9
./configure --with-sql --with-sql-drivers --with-mysql
make && make install


vi /usr/local/etc/dovecot.conf
protocols=pop3
listen=*
disable_plaintext_auth = no
ssl_disable = yes
auth_debug = yes
log_path = /var/log/pop3.log
mail_location = maildir:/data/mailbox/%u
pop3_uidl_format=%08Xu%08Xv
mail_uid = 12345
mail_gid = 12345
first_valid_uid = 12345
auth default {
mechanisms = PLAIN LOGIN CRAM-MD5 DIGEST-MD5
passdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
userdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
socket listen {
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = postfix
group = postfix
}
}
}

vi /usr/local/etc/dovecot-sql.conf

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=PostFIX_1228
default_pass_scheme = MD5
password_query = SELECT password, maildir as userdb_home FROM mailbox WHERE username = '%u'
user_query = select maildir as home,12345 as uid ,12345 as gid from mailbox where username='%u' And active='1'


(5)配置postfix

vi /etc/postfix/main.cf

command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailbox_size_limit = 209715200 #容量大小
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
message_size_limit = 52428800 #限制附件大小
mydomain = mail.abc.com #域名
myhostname = mail #主机名
mynetworks = 0.0.0.0/0 #配置这一项使用用户可在任意地发送邮件
mynetworks_style = subnet
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop

#配置使用dovecot的sql认证
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_sender_domain, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination

#上面这个smtpd_recipient_restrictions后面的项目每个逗号后都要有一个空格,否则会有问题

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot

unknown_local_recipient_reject_code = 550

#虚拟用户设定
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:12345
virtual_mailbox_base = /data/mailbox/
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 209715200
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = virtual
virtual_uid_maps = static:12345


vi /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = PostFIX_1228
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address

vi /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = PostFIX_1228
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain

vi /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = PostFIX_1228
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username

(6)运行测试

在测试前需要在DNS服务器上建一个MX记录解析到本机

postfix start
dovecot

然后用netstat -putln查看25和110端口是否启动

测试认证

telnet localhost 25

ehlo localhost # 手工输入返回下列信息表示postfix运行良好
250-mail
250-PIPELINING
250-SIZE 52428800
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login #手工输入进行认证
334 VXNlcm5hbWU6
bHNtQG1haWwuYWJjLmNvbQ== #手工输入用户名的base64编码
334 UGFzc3dvcmQ6
MTIzNDU2 #手工输入密码的base64编码
334 UGFzc3dvcmQ6
235 2.7.0 Authentication successful #返回该信息表示认证成功
mail from:lsm@mail.abc.com #发件人地址
250 2.1.0 Ok
rcpt to:lsm@163.com #收件人地址
data
sdfasdfsdfsf #输入发信内容
. #结束输入发信内容
subject:test email #发信主题

将字符转换为base64编码的方法

vi a.php
<?php
echo base64_encode("lsm@mail.abc.com");
echo "<p>;";
echo base64_encode("123456");
?>;

运行/usr/local/php/bin/php a.php就可以看到转换的base64编码

测试收信

telnet localhost 110

user lsm@mail.abc.com #输入用户名
+OK
pass 123456 #输入密码
+OK Logged in.
list #列出新邮件
+OK 1 messages: #有一封新邮件
1 1608

整个过程完成了,你可以在outlook或者foxmail上配置看能不能正常收发邮件,注意用户名是完整的,如lsm@mail.abc.com,这个邮件地址就是用户名

[ 本帖最后由 00306 于 2010-1-4 14:55 编辑 ]占个沙发板凳~~:mrgreen:只有站在地板上啦http://www.!汉王电纸书

有疑问:
postfix支持curys-sasl 或dovecot 做验证。只选一个如dovecot不就干净了吗?干嘛非要两个都上?感觉有点多余。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多