扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Ò»¡¢ÓʼþϵͳµÄ°²×°
¡¡¡¡1¡¢Èí¼þ°ü°²×°
¡¡¡¡Postfix+Courier-IMAP+Cyrus-SASL+PAM_MySQL+MySQLÕâÖÖ°²×°·½Ê½¼òµ¥Ò×ÐУ¬ÔÚDebianϵݲװ¸ü¼Ó·½±ã£º
¡¡¡¡# apt-get install courier-pop postfix-mysql postfix-tls courier-authdaemon
¡¡¡¡courier-authmysql libpam-mysql libsasl7 libsasl-modules-plain courier-imap
¡¡¡¡Èç¹ûÄãµÄϵͳ±¾ÉíûÓÐmysql£¬ÄÇôÔÚÉÏÃæµÄÁбíÀﻹҪ¼ÓÉÏmysql-server¡£aptÔÚ°²×°¹ý³ÌÖлáÓмòµ¥µÄÌáʾ£¬ÒªÇóÌîÉÏϵͳµÄÓòÃûµÈÐÅÏ¢¡£
¡¡¡¡2¡¢postfixµÄÅäÖÃ
¡¡¡¡ÐÞ¸Ämain.cf£º
¡¡¡¡Ìí¼Ó£º
¡¡¡¡home_mailbox = Maildir/
¡¡¡¡¸æËßpostfixʹÓÃMaildir·½Ê½
¡¡¡¡mydestination = $myhostname, $transport_maps
¡¡¡¡¸æËßpostfix·¢ËÍ$myhostname(±¾»ú)ºÍ$transport_maps(transport±íÀïµÄÓòÃû)µÄÓʼþ¡£
¡¡¡¡alias_maps = mysql:/etc/postfix/mysql-aliases.cf
¡¡¡¡relocated_maps = mysql:/etc/postfix/mysql-relocated.cf
¡¡¡¡transport_maps = mysql:/etc/postfix/mysql-transport.cf
¡¡¡¡virtual_maps = mysql:/etc/postfix/mysql-virtual.cf
¡¡¡¡¸æËßpostfix´ÓÄÄÀïÕÒÕâЩ±í¡£
¡¡¡¡local_recipient_maps = $alias_maps $virtual_mailbox_maps unix:passwd.byname
¡¡¡¡postfix´«µÝ¸ø±¾µØÊÕ¼þÈ˵ļ¸ÖÖ·½·¨¡£
¡¡¡¡virtual_mailbox_base = /home/vmail
¡¡¡¡virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-maps.cf
¡¡¡¡virtual_uid_maps = mysql:/etc/postfix/mysql-virtual-uid.cf
¡¡¡¡virtual_gid_maps = mysql:/etc/postfix/mysql-virtual-gid.cf
¡¡¡¡ÐéÄâÓû§µÄÐÅÏ¢¡£
¡¡¡¡broken_sasl_auth_clients = yes
¡¡¡¡smtpd_sasl_auth_enable = yes
¡¡¡¡smtpd_sasl_security_options = noanonymous
¡¡¡¡ÆôÓÃsasl£¬±ØÐëÑéÖ¤²ÅÄÜ·¢ÐÅ¡£
¡¡¡¡smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unknown_recipient_
¡¡¡¡domain,reject_non_fqdn_recipient,check_relay_domains
¡¡¡¡·¢ÐÅÏÞÖÆ¡£
¡¡¡¡»¹¿ÉÒÔ¼ÓÉÏһЩÆäËûµÄ²ÎÊý£º
¡¡¡¡disable_vrfy_command = yes
¡¡¡¡½«vrfy¹¦Äܹصô¡£
¡¡¡¡3¡¢ÓëMySQL½áºÏµÄÅäÖü°Êý¾Ý±í½á¹¹
¡¡¡¡×¢Ò⣺ÅäÖÃmysqlÏà¹Ø²¿·ÖҪд127.0.0.1¶ø²»ÒªÐ´localhost£¬Èç¹ûʹÓÃlocalhost£¬postfix»á³¢ÊÔsocketÁ¬½Ó¡£debianµÄpostfixʹÓÃsocketÁ¬½ÓºÃÏñÓÐÎÊÌâ¡£mysql²»ÄÜʹÓÃskip-networkingÑ¡ÏҪʹÓÃ--bind-address=127.0.0.1ÈÃËü¼àÌýÔÚ127.0.0.1¡£(·Ç³£¸ÐлMartin List-PetersenÖ¸µã)
¡¡¡¡»¹ÓÐҪעÒâµÄÊÇÈç¹ûÊÇ×Ô¼º±àÒëµÄmysql£¬½¨ÒéÔÚÆô¶¯µÄʱºò¼ÓÉÏ--socket=/var/run/mysqld/mysqld.sock²ÎÊý£¬ÒòΪpam-mysqlÓÖÐèҪʹÓÃÕâ¸ösocket¡£Èç¹ûÄãµÄapache+phpÊÇ×Ô¼º±àÒëµÄ»°£¬phpÓÖÐèÒªÖØбàÒ룬ÅäÖõÄʱºòÐèÒª¼ÓÉÏ--with-mysql-sock=/var/run/mysqld/mysqld.sock²ÎÊý¡£
¡¡¡¡ÊDz»ÊDZȽϷ³?Õâ²»¹ýÊǸö¿ªÊ¼¡£
¡¡¡¡MySQLµÄÊý¾Ý±í£º
¡¡¡¡CREATE TABLE alias (
¡¡¡¡id int(11) unsigned NOT NULL auto_increment,
¡¡¡¡alias varchar(128) NOT NULL default "",
¡¡¡¡destination varchar(128) NOT NULL default "",
¡¡¡¡PRIMARY KEY (id)
¡¡¡¡) TYPE=MyISAM;
¡¡¡¡CREATE TABLE relocated (
¡¡¡¡id int(11) unsigned NOT NULL auto_increment,
¡¡¡¡email varchar(128) NOT NULL default "",
¡¡¡¡destination varchar(128) NOT NULL default "",
¡¡¡¡PRIMARY KEY (id)
¡¡¡¡) TYPE=MyISAM;
¡¡¡¡CREATE TABLE transport (
¡¡¡¡id int(11) unsigned NOT NULL auto_increment,
¡¡¡¡domain varchar(128) NOT NULL default "",
¡¡¡¡destination varchar(128) NOT NULL default "",
¡¡¡¡PRIMARY KEY (id),
¡¡¡¡UNIQUE KEY domain (domain)
¡¡¡¡) TYPE=MyISAM;
¡¡¡¡CREATE TABLE users (
¡¡¡¡id int(11) unsigned NOT NULL auto_increment,
¡¡¡¡email varchar(128) NOT NULL default "",
¡¡¡¡clear varchar(128) NOT NULL default "",
¡¡¡¡name tinytext NOT NULL,
¡¡¡¡uid int(11) unsigned NOT NULL default "1011",
¡¡¡¡gid int(11) unsigned NOT NULL default "1011",
¡¡¡¡homedir tinytext NOT NULL,
¡¡¡¡maildir tinytext NOT NULL,
¡¡¡¡quota tinytext NOT NULL,
¡¡¡¡postfix enum("Y","N") NOT NULL default "Y",
¡¡¡¡PRIMARY KEY (id),
¡¡¡¡UNIQUE KEY email (email)
¡¡¡¡) TYPE=MyISAM;
¡¡¡¡CREATE TABLE virtual (
¡¡¡¡id int(11) unsigned NOT NULL auto_increment,
¡¡¡¡email varchar(128) NOT NULL default "",
¡¡¡¡destination varchar(128) NOT NULL default "",
¡¡¡¡PRIMARY KEY (id)
¡¡¡¡) TYPE=MyISAM;
¡¡¡¡/etc/postfixĿ¼Ï¸÷mysqlÅäÖÃÎļþ£º
¡¡¡¡mysql-aliases.cf
¡¡¡¡user = mysql-postfix-user
¡¡¡¡password = mysql-postfix-pass
¡¡¡¡dbname = postfix
¡¡¡¡table = alias
¡¡¡¡select_field = destination
¡¡¡¡where_field = alias
¡¡¡¡hosts = 127.0.0.1
¡¡¡¡mysql-relocated.cf
¡¡¡¡user = mysql-postfix-user
¡¡¡¡password = mysql-postfix-pass
¡¡¡¡dbname = postfix
¡¡¡¡table = relocated
¡¡¡¡select_field = destination
¡¡¡¡where_field = email
¡¡¡¡hosts = 127.0.0.1
¡¡¡¡mysql-transport.cf
¡¡¡¡user = mysql-postfix-user
¡¡¡¡password = mysql-postfix-pass
¡¡¡¡dbname = postfix
¡¡¡¡table = transport
¡¡¡¡select_field = destination
¡¡¡¡where_field = domain
¡¡¡¡hosts = 127.0.0.1
¡¡¡¡TLSÖ§³Ö
¡¡¡¡Í¨¹ýÐÞ¸Ä/usr/lib/ssl/misc/CA.pll½Å±¾ÊµÏÖ£¬ÒÔÏÂÐ޸ĺóCA1.plºÍδÐÞ¸ÄCA.plÖ®¼äµÄ¶Ô±È£º
¡¡¡¡*** CA.pl
¡¡¡¡--- CA1.pl
¡¡¡¡***************
¡¡¡¡*** 59,69 ****
¡¡¡¡} elsif (/^-newcert$/) {
¡¡¡¡# create a certificate
¡¡¡¡! system ("$REQ -new -x509 -keyout newreq.pem -out newreq.pem $DAYS");
¡¡¡¡$RET=$?;
¡¡¡¡print "Certificate (and private key) is in newreq.pem "
¡¡¡¡} elsif (/^-newreq$/) {
¡¡¡¡# create a certificate request
¡¡¡¡! system ("$REQ -new -keyout newreq.pem -out newreq.pem $DAYS");
¡¡¡¡$RET=$?;
¡¡¡¡print "Request (and private key) is in newreq.pem ";
¡¡¡¡} elsif (/^-newca$/) {
¡¡¡¡--- 59,69 ----
¡¡¡¡} elsif (/^-newcert$/) {
¡¡¡¡# create a certificate
¡¡¡¡! system ("$REQ -new -x509 -nodes -keyout newreq.pem -out newreq.pem $DAYS");
¡¡¡¡$RET=$?;
¡¡¡¡print "Certificate (and private key) is in newreq.pem "
¡¡¡¡} elsif (/^-newreq$/) {
¡¡¡¡# create a certificate request
¡¡¡¡! system ("$REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS");
¡¡¡¡$RET=$?;
¡¡¡¡print "Request (and private key) is in newreq.pem ";
¡¡¡¡} elsif (/^-newca$/) {
¡¡¡¡ÏÖÔھͿÉÒÔʹÓÃÐ޸ĵÄCA1.plÀ´Ç©·¢Ö¤Ê飺
¡¡¡¡# cd /usr/local/ssl/misc
¡¡¡¡# ./CA1.pl -newca
¡¡¡¡# ./CA1.pl -newreq
¡¡¡¡# ./CA1.pl -sign
¡¡¡¡# cp demoCA/cacert.pem /etc/postfix/CAcert.pem
¡¡¡¡# cp newcert.pem /etc/postfix/cert.pem
¡¡¡¡# cp newreq.pem /etc/postfix/key.pem
¡¡¡¡ÐÞ¸Ämain.cf£¬Ìí¼Ó£º
¡¡¡¡smtpd_tls_cert_file = /etc/postfix/cert.pem
¡¡¡¡smtpd_tls_key_file = /etc/postfix/privkey.pem
¡¡¡¡smtpd_use_tls = yes
¡¡¡¡tls_random_source = dev:/dev/urandom
¡¡¡¡tls_daemon_random_source = dev:/dev/urandom
¡¡¡¡ÖØÆðpostfixºó¾Í¿ÉÒÔ¿´µ½250-STARTTLS
¡¡¡¡ºÜ¶àÓʼþ¿Í»§¶Ë¶ÔTLSµÄÖ§³Ö²¢²»ÊǷdz£ºÃ£¬½¨ÒéʹÓÃstunnelÀ´ÊµÏÖÏàÓ¦µÄsmtpºÍpop3¼ÓÃÜ¡£
¡¡¡¡# apt-get install stunnel
¡¡¡¡Ö¤Ê飺
¡¡¡¡# openssl req -new -x509 -days 365 -nodes -config /etc/ssl/openssl.cnf -out stunnel.pem -keyout stunnel.pem
¡¡¡¡# openssl gendh 512 >>stunnel.pem
¡¡¡¡·þÎñ¶Ë£º
¡¡¡¡# stunnel -d 60025 -r 25 -s nobody -g nogroup
¡¡¡¡# stunnel -d 60110 -r 110 -s nobody -g nogroup
¡¡¡¡Èç¹ûʹÓÃ-n pop3µÈ²ÎÊý¾ÍÖ»ÄÜÓÃÓʼþ¿Í»§¶ËÊÕÐÅ¡£
¡¡¡¡¿Í»§¶Ë£º
¡¡¡¡½¨Ò»¸östunnel.confÎļþ£º
¡¡¡¡client = yes
¡¡¡¡[pop3]
¡¡¡¡accept = 127.0.0.1:110
¡¡¡¡connect = 192.168.7.144:60110
¡¡¡¡[smtp]
¡¡¡¡accept = 127.0.0.1:25
¡¡¡¡connect = 192.168.7.144:60025
¡¡¡¡È»ºóÆô¶¯stunnel.exe£¬ÔÚÓʼþ¿Í»§¶ËµÄsmtpºÍpop3µÄ·þÎñÆ÷¶¼Ìî127.0.0.1¾Í¿ÉÒÔÁË£¬ÕâÑù´ÓÄãµ½Óʼþ·þÎñÆ÷¶ËµÄÊý¾Ý´«Êä¾ÍÈÃstunnel¸øÄã¼ÓÃÜÁË¡£
¡¡¡¡4¡¢²âÊÔÓû§
¡¡¡¡# mkdir -p /home/vmail/test.org/san/
¡¡¡¡# chown -R nobody.nogroup /home/vmail
¡¡¡¡# chmod -R 700 /home/vmail
¡¡¡¡mysql> use postfix
¡¡¡¡mysql> insert into transport set domain="test.org", destination="
¡¡¡¡virtual:";
¡¡¡¡mysql> insert into users set email="san@test.org",clear="test",name="",uid="65534",gid="65534",
¡¡¡¡homedir="home/vmail",maildir="test.org/san/";
¡¡¡¡È»ºó¾Í¿ÉÒÔʹÓÿͻ§¶ËÊÕ·¢Óʼþ£¬¼ÇµÃÓû§ÃûÊÇemailµØÖ·¡£
¡¡¡¡mysql-virtual.cf
¡¡¡¡user = mysql-postfix-user
¡¡¡¡password = mysql-postfix-pass
¡¡¡¡dbname = postfix
¡¡¡¡table = virtual
¡¡¡¡select_field = destination
¡¡¡¡where_field = email
¡¡¡¡hosts = 127.0.0.1
¡¡¡¡mysql-virtual-maps.cf
¡¡¡¡user = mysql-postfix-user
¡¡¡¡password = mysql-postfix-pass
¡¡¡¡dbname = postfix
¡¡¡¡table = users
¡¡¡¡select_field = maildir
¡¡¡¡where_field = email
¡¡¡¡additional_conditions = and postfix = "y"
¡¡¡¡hosts = 127.0.0.1
¡¡¡¡mysql-virtual-uid.cf
¡¡¡¡user = mysql-postfix-user
¡¡¡¡password = mysql-postfix-pass
¡¡¡¡dbname = postfix
¡¡¡¡table = users
¡¡¡¡select_field = uid
¡¡¡¡where_field = email
¡¡¡¡additional_conditions = and postfix = "y"
¡¡¡¡hosts = 127.0.0.1
¡¡¡¡mysql-virtual-gid.cf
¡¡¡¡user = mysql-postfix-user
¡¡¡¡password = mysql-postfix-pass
¡¡¡¡dbname = postfix
¡¡¡¡table = users
¡¡¡¡select_field = gid
¡¡¡¡where_field = email
¡¡¡¡additional_conditions = and postfix = "y"
¡¡¡¡hosts = 127.0.0.1
¡¡¡¡ÐÞ¸ÄCourierÏà¹ØÉèÖã¬/etc/courier/imapd:
¡¡¡¡AUTHMODULES="authdaemon"
¡¡¡¡IMAP_CAPABILITY="IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT
¡¡¡¡THREAD=REFERENCES SORT AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE"
¡¡¡¡ÐÞ¸Ä/etc/courier/pop3d
¡¡¡¡AUTHMODULES="authdaemon"
¡¡¡¡POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
¡¡¡¡ÐÞ¸Ä/etc/courier/authdaemonrc
¡¡¡¡authmodulelist="authmysql authpam"
¡¡¡¡Ê¹ÓÃmysqlÑéÖ¤ºÍpamÑéÖ¤¡£
¡¡¡¡ÐÞ¸Ä/etc/courier/authmysqlrc
¡¡¡¡MYSQL_SERVER 127.0.0.1
¡¡¡¡MYSQL_USERNAME mysql-postfix-user
¡¡¡¡MYSQL_PASSWORD mysql-postfix-pass
¡¡¡¡#MYSQL_SOCKET /var/run/mysql/mysql.sock
¡¡¡¡MYSQL_PORT 0
¡¡¡¡MYSQL_OPT 0
¡¡¡¡MYSQL_DATABASE postfix
¡¡¡¡MYSQL_USER_TABLE users
¡¡¡¡MYSQL_LOGIN_FIELD email
¡¡¡¡MYSQL_CLEAR_PWFIELD clear
¡¡¡¡MYSQL_UID_FIELD uid
¡¡¡¡MYSQL_GID_FIELD gid
¡¡¡¡MYSQL_HOME_FIELD homedir
¡¡¡¡MYSQL_MAILDIR_FIELD maildir
¡¡¡¡SASL library
¡¡¡¡´´½¨/etc/postfix/sasl/smtpd.conf£º
¡¡¡¡pwcheck_method: PAM
¡¡¡¡PAM-MySQL
¡¡¡¡´´½¨/etc/pam.d/smtp£º
¡¡¡¡auth optional pam_mysql.so host=localhost db=postfix user=
¡¡¡¡mysql-postfix-user passwd=mysql-postfix-pass table=users
¡¡¡¡usercolumn=email passwdcolumn=clear crypt=n
¡¡¡¡account required pam_mysql.so host=localhost db=postfix user=mysql-postfix-user passwd=mysql-postfix-pass usercolumn=email passwdcolumn=clear crypt=n
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者