
ã€ã³ã¹ããŒã«ããããµãŒããŒã·ã¹ãã ãçµ±åããããã°ã©ã ã®äžç°ãšããŠãã¡ãŒã«ãµãŒããŒã®åäœæãšããã¿ã¹ã¯ãçºçããŸããã ããã¥ã¢ã«ãšããã¥ã¢ã«ã®ææ ®æ·±ãç 究ã«ãããããªãå¥åŠãªäºå®ã瀺ãããŸãããã¡ãŒã©ãŒãå±éããããã®ãã¹ããã©ã¯ãã£ã¹ãšæ確ã«ä¿¡é Œã§ããã¬ã€ããé¡äŒŒç¹ã¯ã©ãã«ããããŸããã§ããã
ãã®ããã¥ã¢ã«ã¯ãäŒç€Ÿã®å éšææžã«åºã¥ããŠæ®µéçã«èª¬æãããŠãããå®å šã«æãããªåé¡ã«å¯ŸåŠããŠããŸãã ã°ã«ã¯æéãç¡é§ã«ããªããããããŸããããããã«ã¯ããŠããŠããããŸãã-ããã¥ã¢ã«ã¯å¯ãéãã§ãããã¡ãŒã©ãŒãå±éããããã«èŠã€ãã£ããã¹ãŠã®ããã¥ã¢ã«ããã¯ããŠã®æãæ¹ã®çµµã«äŒŒãŠããããã«ã®ã¿å ¬éãããŠããŸãã
ãã¹ãŠãæåã§åéããããªãå Žåã¯ãããããiRedMailããã±ãŒãžãæé©ãªãªãã·ã§ã³ã§ãã PostfixãDovecotãApacheãMySQL / PostgreSQLãPolicydãAmavisãFail2banãRoundcubeãAwstatsã®åªãããã«ãã ç°¡åã«ã€ã³ã¹ããŒã«ã§ããå®å®ããŠåäœããŸããçŸãã管çããã«ïŒç¡æïŒãšéåžžã«çŸãã管çããã«ïŒææïŒãããããããã¯æ²æšãªPostfixAdminãšã¯æ¯èŒã§ããŸããã èäœåŽåã®ãã¡ã³ã¯èªã¿ç¶ããããšãã§ããŸãã
å€ããµãŒããŒã¯Gentooã®äžã§åäœããPostfix + VDAããCourierãšãã°ã®ããSASLã®ç±æ žçæãéã³ãæåã®èªèšŒæã«ã®ã¿mysqlã«æ¥ç¶ããããšã«ããŸããã å€æèšç»ã¯ãå éšæšæºã®CentOSã«ç§»è¡ããããšã§ããã MTAãšMDAã®åœ¹å²ã¯ãPostfixãšDovecotã®æã«å²ãåœãŠãããŠãããè£å©ç ²ãšããŠAmavis + SpamAssassin + ClamAV + Postgrey + Fail2Banãå²ãåœãŠãããŠããŸãã ã¡ãã»ãŒãžã¯ãã¡ã€ã«ã«ä¿åãããã¢ã«ãŠã³ããšãã¡ã€ã³ã¯MySQLã«ä¿åãããŸãã ããã€ãã®ã¡ãŒã«ãã¡ã€ã³ããµãŒããŒäžã§ã¹ãã³ããä»®æ³ã¯ã©ãŒã¿ããµããŒããããŸãã

[*]è¿œå ã®ãªããžããªãæ¥ç¶ããŸãã ãšãã«ãrpmforgeãcentaltãremiããããŸãã ã ãã¹ãŠãåžžã«å¿ èŠãªããã§ã¯ãªããyum-prioritiesãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ã§ããŸãã ãŸãããŸãã¯ããªããç解ããã®ãé¢åãªå Žåã¯ãæã§ãããããªã³ãŸãã¯ãªãã«ããŸãã 次ã«ãã©ã®ãªããžããªãã€ã³ã¹ããŒã«ãããŠãããã説æããŸãã
[*] SELinuxã§ã®äœæ¥ã¯å¥ã®è³æãšããŠäŸ¡å€ããããŸãããããã£ãŠããã®èšäºã®ãã¬ãŒã ã¯ãŒã¯å ã§ã¯ãselinuxãããå¯å®¹ã«ãããç¡å¹ã«ãããããããšãæ³å®ããŠããŸãã
[*] ntpãå¿ããªãã§ãã ããïŒ
yum install ntp ntpdate < ntp > chkconfig ntpd on && /etc/init.d/ntpd start
ããã«ãããDovecotã§çºçããå¯èœæ§ã®ãããæéã¯åŸæ»ãããŸããããšããåé¡ãåé¿ã§ããŸãã / etc / sysconfig / ntpdã§ã¹ã€ããã-Lã«å€æŽããŠãntpdããããã¯ãŒã¯ã§ãªãã¹ã³ããªãããã«ããããšãã§ããŸãã
[*]æºå段éã®æåŸã«ããã¹ããä¿é²ããäœæ¥ãä¿é²ãããŠãŒãã£ãªãã£ãé 眮ããŸãã
yum install wget mlocate bind-utils telnet mailx sharutils

ããŒã¿ããŒã¹ã«ã¯ãRemiã®MySQL 5.5ã䜿çšããŸã ã ãã¡ããmariadbã¯ã§ããŸãããMySQLããŸã çããŠãããã¡ã«ãäžèšã®ã¢ã»ã³ããªã¯å®å šã«ç§ã«åã£ãŠããŸãã ããŒãžã§ã³ã¯éèŠã§ã Postfixã2.10ã«ã¢ããã°ã¬ãŒããããšãã圌ã¯æ°ããããŒãžã§ã³ãå¿ èŠã«ãªããããŒã¹ãã5.1ã眮ããšãCentALTããpostfixãæŽæ°ãããšMariaDBããã«ãããŸãã PgSQLã®æ¹ã奜ããªäºº-ãããå ¥ããŠãã ããã ãããã€ã¡ã³ãã¯å€ãããŸãããåŸçœ®æ§æãã¡ã€ã«ãå€æŽããã«äœ¿çšããããšãã§ããŸãã postgresqlèªäœã®æ§æãšããŒã¿ããŒã¹ã®äœæã®ã¿ãç°ãªããŸãã
ãããã«äœ¿ããããªãã·ã§ã³ã¯ãèµ·åã«é©ããŠããŸãïŒãããã«æ¡åŒµãããmy.cnfãäžã®ãªããžããªã«è¡šç€ºãããŸãïŒã åãååã®ããŒã¿ããŒã¹ãšããã«å¯Ÿãããã¹ãŠã®æš©éãæã€postfixãŠãŒã¶ãŒãäœæããŸãã
CREATE USER postfix@localhost IDENTIFIED BY 'mypassword'; CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO postfix;
ClamAVã¯ã¢ã³ããŠã€ã«ã¹ãšããŠæ©èœããŸãã ææ°ããŒãžã§ã³ãCentALTã«ããããšã¯æ³šç®ã«å€ããŸããã50 MBã®clamav-dbãããŠã³ããŒãããããšããŠæ»ãã§ããŸãããããã©ã³ã¯ãã€ã³ããããŠã³ããŒãããããããŸããã ãã®ããã EPELãããã€ããŒããŒãžã§ã³ãå°ãªãããŠã倩æ°äºå ±ãè¡ããŸããã Clamã¯ãœã±ãããä»ããŠæ©èœããããã / etc / clamd.confã§æ¬¡ã®è¡ã«ã€ããŠã³ã¡ã³ãããŸãã
#TCPSocket 3310 #TCPAddr 127.0.0.1
ãŠã€ã«ã¹å¯ŸçããŒã¿ããŒã¹ã®æŽæ°ã¯èªåçã«æ¥ç¶ããã freshclamãŠãŒãã£ãªãã£ã責任ãè² ããŸãã 察å¿ãããã¡ã€ã«ãcron.dailyã«ããããšã確èªãããŠã€ã«ã¹å¯ŸçãµãŒãã¹ãå®è¡ããŸã
freshclam chkconfig clamd on && /etc/init.d/clamd start

Webã€ã³ã¿ãŒãã§ãŒã¹ããããã€ãããããªããã¯ã誰ã«ãšã£ãŠãå人çãªåé¡ã§ãã 移è¡ããã»ã¹ãå¶åŸ¡ããããã«å¿ èŠã§ããã ããŒã¿ããŒã¹æ§é ãäœæãããã¡ã€ã³ãã¡ãŒã«ããã¯ã¹ããšã€ãªã¢ã¹ãªã©ã管çããããã«å¿ èŠã«ãªãå ŽåããããŸãã ææ°ã®ã¿ã¹ã¯ã«ã€ããŠã¯ãã»ãšãã©ã®ããã¥ã¢ã«ãç©æ¥µçã«PostfixAdminãææ¡ããŠããŸãããç§ã¯åŒ·ããããå«ããŸãã ã¡ãŒã«ãµãŒããŒãã¡ãŒã«åŠçãåŠçããWebãµãŒããŒãWebã¢ããªã±ãŒã·ã§ã³ãä¿æããDBãµãŒããŒãããŒã¿ããŒã¹ãåŠçããå¿ èŠããããšããååã«åŸã£ãŠãåé¢ã®ååã«åŸãããšããå§ãããŸãã
Webãµãã·ã¹ãã ãå±éããããªã人ã®ããã«ãç§ã¯ããããå Žåã®ããã«ã¡ãŒã«ãµãŒããŒã®SQLããŒã¿ããŒã¹ãã³ããæ·»ä»ããŠããŸãã 䜿çšãããŠããªãæ©èœããããŸãïŒ githubã®mysql_dump.sql
PostfixAdminãå¿ èŠãªå Žå-nginx / apache + phpãé 眮ã ãå®éã«ã¯PostfixAdminèªäœãé 眮ããŸãã ãŸããäžèšã®ãã³ãã®äžã«å±éããããšã¯ã§ããŸãããäžéšã®ãäœåãªãããŒãã«ãæ§é ããåé€ãããŠããŸãã PostfixAdminã¯å°ããã¥ã¢ã³ã¹ãèšå®ããŸãã config.inc.phpãç·šéããŸãã次ã®ãã©ã¡ãŒã¿ãŒã«æ³šæããŠãã ããã
## , dovecot $CONF['encrypt'] = 'md5crypt'; $CONF['transport_default'] = 'virtual'; $CONF['emailcheck_resolve_domain']='NO'; ## dovecot, $CONF['create_mailbox_subdirs_prefix']=''; ## , maildir, dict $CONF['new_quota_table'] = 'yes';
ãã®åŸã domain.tld / postfixadmin / setup.phpã«ã¢ã¯ã»ã¹ã㊠ããã¹ã¯ãŒããçæããã¹ãŒããŒç®¡çè ã¢ã«ãŠã³ããäœæã§ããŸãã çæãããããã·ã¥ãconfig.inc.phpãã¡ã€ã«ã«è¿œå ããã¹ããŒã¿ã¹ãå€æŽããå¿ èŠããããŸãã
$CONF['configured'] = true; $CONF['setup_password'] = 't8h9i9s2i7s7m2y4l9o8g9i4n:a0n9d5p2a5s2s9w5o4r7d';
[ïŒ] Postfixadminèªäœã¯ãsetup.phpã®å®è¡æã«mysqlãšpostgresqlã®äž¡æ¹ã«åºæ¬æ§é ãäœæããŸãã 䜿çšããå Žåã¯ã空ã®ããŒã¹ã§ã€ã³ã¹ããŒã«ãå®è¡ããå¿ èŠããããŸãã

ããã©ã«ãæ§é å šäœãpostfixããŒã¿ããŒã¹ã«äœæãããŠããããšã確èªããMTAãšMDAã®ã€ã³ã¹ããŒã«ã«é²ã¿ãŸãã Postfixã¯ãã§ã«CentOSã«ãã³ãã«ãããŠããŸãããææ°ã®ãã®ã§ã¯ãããŸããã CentALTããæŽæ°ãã ããããDovecotãé 眮ããŸãã
yum update postfix yum install dovecot dovecot-mysql
ãã¹ãŠã®äž»èŠãªè¹è¶ã·ã¹ãã ã¯ãå¥ã®ãŠãŒã¶ãŒã®äžã§/ var / vmailã®ãã¡ã€ã«ã§åäœããŸãã
groupadd -g 1000 vmail useradd -d /var/vmail/ -g 1000 -u 1000 vmail chown vmail:vmail /var/vmail
èªå·±çœ²åSSLãäœæããŸããã
mkdir /etc/postfix/certs openssl req -new -x509 -days 3650 -nodes -out /etc/postfix/certs/cert.pem -keyout /etc/postfix/certs/key.pem
æãåä»ãªãã«ãã¹ãããã¯ãPostfixãããŒã¿ããŒã¹ã§åäœãããããšã§ãã
mkdir /etc/postfix/mysql
ãã®ãã£ã¬ã¯ããªã«ã次ã®å 容ã®ãã¡ã€ã«ãäœæããŸãã
MySQLåŸçœ®æ§æ
relay_domains.cf
virtual_alias_domain_maps.cf
virtual_alias_maps.cf
virtual_mailbox_domains.cf
virtual_mailbox_maps.cf
hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'
virtual_alias_domain_maps.cf
hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1
virtual_alias_maps.cf
hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
virtual_mailbox_domains.cf
hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
virtual_mailbox_maps.cf
hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
ãã¡ã€ã«/etc/postfix/main.cfãç·šéããæ°ãã«äœæããããã¡ã€ã«ã䜿çšããŠããŒã¿ããŒã¹ãæäœããããã«Postfixã«æ瀺ããŸãã
# ============================================================ # MySQL mappings # ============================================================ relay_domains = mysql:/etc/postfix/mysql/relay_domains.cf virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf, mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
åªããã¡ãŒã«ãµãŒããŒã¯ç¬èªã®ãµãŒããŒãã¹ãããããèŠç¥ãã¬äººãèªèšŒããŸãã èªèšŒãæ£ããæ©èœããããã«ããã«ã¯ãããŒã587ã§SMTPãµãŒãã¹ãããã«äžããŠéä¿¡ãå®è¡ããŸãã ããã©ã«ãã§èªèšŒä»ãã®smtpãµãŒããŒã«å ¥ããšãã«æ°ããã¢ã«ãŠã³ããäœæãããšãã®ã¹ããŒããã©ã³ã¯587ããŒããæäŸããŸãã mail.domain.tldãå ¥åããã ãã§ã¯äžååã§ããããšãã¯ã©ã€ã¢ã³ãã«èª¬æãããã¯ãããŸããããŸããããã€ãã®ããŒããç»é²ããå¿ èŠããããŸãã äžè¬çã«ã/ etc / postfix / master.cfã§ã éä¿¡ãæ åœããã»ã¯ã·ã§ã³ãç·šéããŸãã
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_wrappermode=no -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination -o milter_macro_daemon_name=ORIGINATING
[ïŒ] -oããŒã®åã®ã¹ããŒã¹ã«æ³šæããŠãã ãã-ãããããªããšãèšå®ã¯ç¡å¹ã«ãªããŸãã
ãšããããmaster.cfãèã«çœ®ããåŸã§æ»ã£ãŠ/etc/postfix/main.cfã«é²ã¿ãŸã
soft_bounce = no myhostname = mail.domain.tld mydomain = domain.tld myorigin = $myhostname # $myhostname $mydomain # do not list domain in BOTH mydestination and virtual_mailbox_domains mydestination = localhost.$mydomain, localhost ## ## ## mynetworks = 192.168.0.0/16, 127.0.0.0/8 ## nis:/ ## dict_nis_init: NIS domain name not set - NIS lookups disabled alias_maps = hash:/etc/aliases smtpd_banner = $myhostname ESMTP $mail_name debug_peer_level = 2 debug_peer_list = 127.0.0.1
ãããã¯ããã©ã«ãã®è¡ã®å€æŽã§ããã 次ã«ãèšå®ã®ããã€ãã®ã»ã¯ã·ã§ã³ãè¿œå ããŸãã éè€ã確èªãããã€ãã£ãæ§æããèŠã€ãã£ãå Žåã¯ããããåé€ããŸãã /etc/postfix/main.cfãã¡ã€ã«ã®äžéšã«ããæ§é åãããã¯ã«èšå®ãå ¥åããããšããå§ãããŸãã
å¥ã®æ§æã·ãŒã
# ============================================================ # RESTRICTIONS # # Uncomment reject_rbl_client if necessary # More information at: http://help.ubuntu.ru/wiki/____smtp_ # ============================================================ smtpd_discard_ehlo_keywords = etrn, silent-discard smtpd_forbidden_commands = CONNECT GET POST broken_sasl_auth_clients = yes smtpd_delay_reject = yes smtpd_helo_required = yes disable_vrfy_command = yes smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname smtpd_data_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_multi_recipient_bounce, smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain smtpd_recipient_restrictions = reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_multi_recipient_bounce, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:/var/spool/postfix/postgrey/socket, #reject_rbl_client zen.spamhaus.org, #reject_rbl_client bl.spamcop.net, #reject_rbl_client dnsbl.sorbs.net, reject_invalid_hostname # ============================================================ # TLS # ============================================================ smtp_tls_security_level = may smtpd_tls_security_level = may smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache smtpd_tls_key_file = /etc/postfix/certs/key.pem smtpd_tls_cert_file = /etc/postfix/certs/cert.pem tls_random_source = dev:/dev/urandom # ============================================================ # LIMITS # ============================================================ message_size_limit = 51200000 smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 15 smtpd_error_sleep_time = 20 anvil_rate_time_unit = 60s smtpd_client_connection_count_limit = 20 smtpd_client_connection_rate_limit = 30 smtpd_client_message_rate_limit = 30 smtpd_client_event_limit_exceptions = 127.0.0.1/8 smtpd_client_connection_limit_exceptions = 127.0.0.1/8 # ============================================================ # QUEUE # ============================================================ maximal_queue_lifetime = 1d bounce_queue_lifetime = 1d
[ïŒ]ãã©ãã¯ãªã¹ãã䜿çšãããã©ãã-ããªãã®éžæã ããªããŒãçæããªãããã«ã察å¿ããreject_rbl_clientãã£ã¬ã¯ãã£ããã³ã¡ã³ãåããŸããã å€ãã®å Žåãã°ã¬ãŒãªã¹ãã¯ååã§ãããSpamhausãšãã®ä»ã®ããªã·ãŒã¯æ··åããªã·ãŒã«åŸããŸãããå®éã«ã¯ãæ£çŽãªäººãã¯ãã©ãã¯ãªã¹ãã«ç»é²ãããŠãããã誀æ€ç¥ã¯ãããŸããã§ããã ã©ãããŒãç§ã¯æšæž¬ããŸãã ãããã£ãŠãRBLãã£ã¬ã¯ãã£ããå«ãããã©ããã¯å¥œã¿ã®åé¡ã§ãã æ å ±æäŸã®ç®çã§ãããã瀺ãããšèããŠãã ããã
[ïŒ]ãã©ã¡ãŒã¿ãŒã¯ã°ã«ãŒãã«åããããŸã-æ éã«æ€èšããå¿ èŠã«å¿ããŠèª¿æŽããŠãã ããã ç·šéããã«ä»äººã®èšå®ãç²ç®çã«è²Œãä»ãããããæªããªãã·ã§ã³ã¯ãããŸããã
[ïŒ] Malamutã¯ãpermit_mynetworksãªãã·ã§ã³ãéåžžã«çãããå±éºã§ããããšãæ£ããææããŸããã ãããåé€ããèªèšŒããããŠãŒã¶ãŒã«ã®ã¿éä¿¡ãéä¿¡ã§ããããã«ããæ¹ãã¯ããã«è¯ãã§ãããã
[ïŒ] main.cfãã¡ã€ã«ã«æ»ã ã postgrey ã amavisããã³dovecotãè¿œå ããŸããã ããã§ã¯MDAã«é²ã¿ãŸãããã

ããã¯äœã§ããïŒ
- ããã¯ã¡ãŒã«é ä¿¡ãšãŒãžã§ã³ããããŒã«ã«ãã©ã³ã¹ããŒãã§ã
- Postfixãæ©èœãããã€ãã£ãSASL
- ã¯ã©ãŒã¿ãæäœãã
- ãŠãŒã¶ãŒimapãšpop3ã®æäŸ
/etc/dovecot/dovecot.confã«å¯Ÿããããã€ãã®å€æŽïŒ
protocols = imap pop3 login_greeting = Hello there.
æ§æãã¡ã€ã«ã®æ®ãã®éšåã¯ã䟿å©ãªããã«ã³ã³ããŒãã³ãã«åå²ãããååã«ææžåãããŠããŸãã
10-auth.conf
disable_plaintext_auth = no auth_realms = domain.tld domain2.tld auth_default_realm = domain.tld auth_mechanisms = plain login ## [!] auth-system.conf.ext, ## dovecot pam #!include auth-system.conf.ext
10-logging.conf
åå¥ã®ãªã¹ãã¯ãããŸãã-å¿
èŠãªãªãã·ã§ã³ãèªç±ã«å«ããããšãã§ããŸãã
10-mail.conf
mail_location = maildirïŒ/ var / vmail /ïŒ
d /ïŒ
n
mail_uid = 1000
mail_gid = 1000
mail_plugins =ã¯ã©ãŒã¿
mail_uid = 1000
mail_gid = 1000
mail_plugins =ã¯ã©ãŒã¿
10-master.conf
# imap imaps service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } } # pop3 pop3s service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } } # SASL, postfix service auth { unix_listener auth-userdb { mode = 0600 user = vmail group = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user=postfix group=postfix } }
10-ssl.conf
ssl =ã¯ã
ssl_cert = </etc/postfix/certs/cert.pem
ssl_key = </etc/postfix/certs/key.pem
ssl_cert = </etc/postfix/certs/cert.pem
ssl_key = </etc/postfix/certs/key.pem
15-lda.conf
quota_full_tempfail = no
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
ãããã³ã«lda {
mail_plugins = $ mail_plugins autocreate
}
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
ãããã³ã«lda {
mail_plugins = $ mail_plugins autocreate
}
20-imap.conf
ãããã³ã«imap {
mail_plugins = $ mail_plugins autocreate quota imap_quota
}
mail_plugins = $ mail_plugins autocreate quota imap_quota
}
90-plugin.conf
# . # plugin { autocreate = Trash autocreate2 = sent-mail autocreate3 = drafts autosubscribe = Trash autosubscribe2 = sent-mail autosubscribe3 = drafts }
90-quota.conf
# . plugin { quota_rule = *:storage=200M quota_rule2 = Trash:storage=+10M } plugin { quota_warning = storage=90%% quota-warning 90 %u } # , chmod # quota-warning.sh dovecot-lda service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { user = vmail } } # - maildir # dict, fs dirsize # http://wiki2.dovecot.org/Quota plugin { quota = maildir:User quota }
auth-sql.conf.ext
passdb {
ãã©ã€ããŒ= sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
ãã©ã€ããŒ= sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
ãã©ã€ããŒ= sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
ãã©ã€ããŒ= sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
/etc/dovecot/dovecot-sql.conf.extãäœæããŸãã
dovecot-sql.conf.ext
ãã©ã€ããŒ= mysql
connect = host = localhost dbname = postfix user = postfix password = mypassword
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/ var / vmail /ïŒ d /ïŒ n' as homeã 'maildirïŒ/ var / vmail /ïŒ d /ïŒ n'as mailã1000 AS uidã1000 AS gidãconcatïŒ' *ïŒãã€ã= 'ãquotaïŒAS quota_rule FROM FROM mailbox WHERE username ='ïŒ u 'AND active =' 1 '
password_query =ãŠãŒã¶ãŒãšããŠãŠãŒã¶ãŒåãéžæããã¹ã¯ãŒããuserdb_homeãšããŠã/ var / vmail /ïŒ d /ïŒ nããuserdb_mailãšããŠãmaildirïŒ/ var / vmail /ïŒ d /ïŒ nããuserdb_uidãšããŠ1000ãuserdb_gidãšããŠ1000ãconcat ïŒ '*ïŒãã€ã='ãã¯ã©ãŒã¿ïŒAS userdb_quota_rule FROM FROMã¡ãŒã«ããã¯ã¹WHER
EãŠãŒã¶ãŒå= 'ïŒ u' ANDã¢ã¯ãã£ã= '1'
connect = host = localhost dbname = postfix user = postfix password = mypassword
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/ var / vmail /ïŒ d /ïŒ n' as homeã 'maildirïŒ/ var / vmail /ïŒ d /ïŒ n'as mailã1000 AS uidã1000 AS gidãconcatïŒ' *ïŒãã€ã= 'ãquotaïŒAS quota_rule FROM FROM mailbox WHERE username ='ïŒ u 'AND active =' 1 '
password_query =ãŠãŒã¶ãŒãšããŠãŠãŒã¶ãŒåãéžæããã¹ã¯ãŒããuserdb_homeãšããŠã/ var / vmail /ïŒ d /ïŒ nããuserdb_mailãšããŠãmaildirïŒ/ var / vmail /ïŒ d /ïŒ nããuserdb_uidãšããŠ1000ãuserdb_gidãšããŠ1000ãconcat ïŒ '*ïŒãã€ã='ãã¯ã©ãŒã¿ïŒAS userdb_quota_rule FROM FROMã¡ãŒã«ããã¯ã¹WHER
EãŠãŒã¶ãŒå= 'ïŒ u' ANDã¢ã¯ãã£ã= '1'
Dovecot㧠Postfixã®åéãäœããŸãããã /etc/postfix/main.cfã«2ã€ã®ã»ã¯ã·ã§ã³ãè¿œå ããŸãã
# ============================================================ # SASL # ============================================================ smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth # ============================================================ # VIRTUAL # ============================================================ virtual_mailbox_base = /var/vmail virtual_minimum_uid = 1000 virtual_uid_maps = static:1000 virtual_gid_maps = static:1000 virtual_transport = dovecot dovecot_destination_recipient_limit = 1
ãŸããDovecotãã¡ãŒã«ã®é ä¿¡ã«é¢äžããŠãããšããäºå®ã®åã«Postfixãé 眮ããŸãã /etc/postfix/master.cf㧠ïŒ
# ==================================================================== # DOVECOT # ==================================================================== dovecot unix - nn - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
次ã«ãã¯ã©ãŒã¿ã®è¶ éã«é¢ããèŠåã¹ã¯ãªãã/usr/local/bin/quota-warning.shãæ£ããå®è¡ãããããšã確èªããå¿ èŠããããŸãã ç§ã®å ŽåãCentOSã§ã¯ããã®ãã¹ã誀ã£ãŠæå®ãããŠãããæåã§ç·šéããå¿ èŠããããŸããã ãããã«ããŠããããã©ã«ãã§postmaster@domain.tldãšããŠæå®ãããŠããéä¿¡è ã¢ãã¬ã¹ãç·šéããŠãæåã§ä¿®æ£ããŸãã ç®çã®ãã€ããªãèŠã€ãã
updatedb locate dovecot-lda chmod 755 /usr/local/bin/quota-warning.sh
ãŸãã/ usr / local / bin / quota-warning.shèªäœã®ãã¹ãä¿®æ£ããå¿ èŠã«å¿ããŠããæå³ã®ããããããŒãã¹ã¯ãªããã«è¿œå ããŸãã

Amavisã¯ã¡ãŒã«ãšãŒãžã§ã³ããšã¢ã³ããŠã€ã«ã¹ããã³ã¢ã³ãã¹ãã ã·ã¹ãã ã®éã«ããç§ãã¡ã®ããã«æ©èœãããããspamdãåå¥ã«å®è¡ããå¿ èŠã¯ãããŸãã-å¿ èŠã«å¿ããŠããŒããããã¢ãžã¥ãŒã«ãšããŠæ©èœããŸãã SAãææ°ã®ç¶æ ã«ä¿ã€ã«ã¯ããã€ãã£ãã®sa-updateãŠãŒãã£ãªãã£ã䜿çšãããŸãã etc / cron.dã«ãã¢ããããŒã¿ãŒã®ã¹ã±ãžã¥ãŒã«ãããèµ·åãå«ãsa-updateãã¡ã€ã«ãããããšã確èªããŸãã
[ïŒ] rpmforge-extrasããspamassassin 3.3.2ãã€ã³ã¹ããŒã«ããŠãã ããã EPELããŒãžã§ã³3.3.1ããã®çªåºã¯ãsa-updateã«å 倩çãªæ¬ é¥ããããŸãã ææ°ããŒãžã§ã³3.3.2ã¯ãã§ã«ãã®åé¡ãã解æŸãããŠãããæ£ããæŽæ°ãããŠããŸã
yum install spamassassin amavisd-new
/etc/mail/spamassassin/local.cfãå°ãä¿®æ£ããŸã
local.cf
required_hits 6 report_safe 0 rewrite_header Subject ***SPAM*** # # WEIRD STUFF # score FORGED_MUA_OUTLOOK 2.199 2.199 0.963 1.116 score FH_DATE_PAST_20XX 0.0 score DOS_OE_TO_MX_IMAGE 0.0 score DOS_OE_TO_MX 0.0 score DOS_OUTLOOK_TO_MX 0.0 score TO_NO_BRKTS_DIRECT 0.0 score HELO_LOCALHOST 0.0 score FSL_RU_URL 0.0 score FROM_MISSP_EH_MATCH 1.0 score TVD_RCVD_SINGLE 1.0 score TO_IN_SUBJ 1.0 # # TUNING # score SUBJ_FULL_OF_8BITS 0.00 score HTML_COMMENT_8BITS 0.01 score HEADER_8BITS 0.00 score TO_NO_USER 0.01 score FORGED_MUA_OUTLOOK 0.5 score X_AUTH_WARNING 0.01 score SUBJ_HAS_UNIQ_ID 9.99 score HTTP_USERNAME_USED 9.99 score FORGED_YAHOO_RCVD 9.99 score FORGED_JUNO_RCVD 16 score UNWANTED_LANGUAGE_BODY 1.02 score MLM 5.55 score RCVD_NUMERIC_HELO 4.95 # # WHITE/BLACK LISTS # whitelist_from root@localhost whitelist_from *@example.com blacklist_from *@outblaze.com auto_whitelist_path /etc/mail/spamassassin/auto-whitelist auto_whitelist_file_mode 0666
ãããã Amavisæ§æãã¡ã€ã«ã¯ãç§ãè³è³ããDovecotã®æ§æãšã¯æ£å察ã§ãã ããã¯éåžžã®perlã¹ã¯ãªããã§ããããã©ãŒããããäžååã§ãã å€æŽãå ããã ãã§ãããã¡ã€ã«ã®ååã.plã«å€æŽããæ§æã匷調ããŠç·šéããŸãã ç掻ãå°ã楜ã«ãªããŸãã
amavisd.conf
# amavisd # /etc/postfix/master.cf $max_servers = 4; # $mydomain = 'domain.tld'; # @mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 ); # 2.6.4 . # Open relay? Nonlocal recips but not originating @client_ipaddr_policy = map { $_ => 'MYNETS' } @mynetworks; # spamassassin $sa_tag_level_deflt = 2.0; $sa_tag2_level_deflt = 5.2; $sa_kill_level_deflt = 6.5; $sa_dsn_cutoff_level = 10; # $virus_admin = "virusalert\@$mydomain"; $mailfrom_notify_admin = "virusalert\@$mydomain"; $mailfrom_notify_recip = "virusalert\@$mydomain"; $mailfrom_notify_spamadmin = "abuse\@$mydomain"; # $myhostname = 'mail.domain.tld'; # $final_virus_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_spam_destiny = D_DISCARD; $final_bad_header_destiny = D_PASS; # , # , $virus_quarantine_to = "virus-quarantine\@$mydomain"; $spam_quarantine_to = "spamtrap\@$mydomain"; # - # @whitelist_sender_maps = ( new_RE( qr'.*@example\.com$'i, qr'user@test\.org$'i, )); # @av_scanners @av_scanners = ( ['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], qr/\bOK$/m, qr/\bFOUND$/m, qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ], ); ); # @av_scanners_backup = ( ['ClamAV-clamscan', 'clamscan', "--stdout --no-summary -r --tempdir=$TEMPBASE {}", [0], qr/:.*\sFOUND$/m, qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ], );
次ã«ãã¡ãŒã«ã®ãã§ãã¯ã«Amavisã䜿çšããŠããããšãPostfixã«ç¥ãããŸãã é©åãªãããã¯ã/etc/postfix/master.cfã«è¿œå ããŸã
master.cf
# ==================================================================== # AMAVIS # ==================================================================== amavisfeed unix - - n - 4 lmtp -o lmtp_data_done_timeout=1200 -o lmtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8,192.168.0.0/16 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings -o local_header_rewrite_clients= -o smtpd_milters= -o local_recipient_maps= -o relay_recipient_maps=
/etc/postfix/main.cfã«è¿œå ããŸã
# ============================================================ # AMAVIS # ============================================================ content_filter=amavisfeed:[127.0.0.1]:10024
ãµãŒãã¹ãäœæããŸãã
chkconfig amavisd on && /etc/init.d/amavisd start /etc/init.d/postfix restart telnet 127.0.0.1 10024 # 220 [127.0.0.1] ESMTP amavisd-new service ready

ã°ã¬ãŒãªã¹ãã®å¹çã¯è€æ°åèšè¿°ãããŠãããããéãã«
yum install postgrey
è¿œå ã®èšå®ã¯å¿ èŠãããŸãã-/ etc/postfix/main.cfã§èšå®ããŸã
smtpd_recipient_restrictions = ... reject_unauth_destination, check_policy_service unix:/var/spool/postfix/postgrey/socket, ...
[ïŒ] check_policy_serviceãã£ã¬ã¯ãã£ãã¯ãreject_unauth_destinationã®åŸã«æå®ããå¿ èŠããããŸãã
ã¹ãã£ã³ãããµãŒããŒãé€å€ããå¿ èŠãããå Žåã¯ã /etc/postfix/postgrey_whitelist_clients.localãç·šéããããŒã«ã«ãµãŒããŒããç¹å®ã®ã¡ãŒã«ã¢ãã¬ã¹ãã¹ãã£ã³ããé€å€ããã«ã¯ã postgrey_whitelist_recipientsãç·šéããŸã ã å æ¬çãªæ å ±ã¯wikiã§å ¥æã§ããŸãïŒ wiki.centos.org/HowTos/postgrey
Fail2banã«ã€ããŠãå¥ã®è°è«ã ãã®æå¹æ§ãå®èšŒããããã«ããŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããååŸã®ã¡ãŒã«ãµãŒããŒã®çµ±èšã瀺ãåçã瀺ããŸãã ãã£ãŒãã®èµ€ãç·ã¯ããªãŒãã³ãªã¬ãŒãæ€çŽ¢ããäžæ£ãªã¹ã¯ã€ãã§ãã ãã¡ãããæåã¯éåããŠããã倧ããªè² è·ã«ã¯ãªããŸãããããªããã®ãŽããèãã®ã§ããããã ãããã£ãŠã3ã€ã®ã«ãŒã«ã§fail2banãã€ã³ã¹ããŒã«ãããšãã°ã©ãã®å€èŠ³ãå€§å¹ ã«æ¹åãããŸãã

yum install fail2ban
ã¡ãŒã«ãµãŒããŒ/etc/fail2ban/jail.confã®ã«ãŒã«
# # , # ## ## , ## [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/secure maxretry = 5 [postfix-banhammer] enabled = true filter = postfix action = iptables-multiport-tcp[name=PFIX, port="smtp,smtps", protocol=tcp] logpath = /var/log/maillog maxretry = 3 bantime = 7200 [dovecot-banhammer] enabled = true filter = dovecot action = iptables-multiport-tcp[name=DCOT, port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/maillog findtime = 300 maxretry = 10 bantime = 1800 [sasl-banhammer] enabled = true filter = sasl action = iptables-multiport-tcp[name=SASL, port="smtp,smtps", protocol=tcp] logpath = /var/log/maillog findtime = 300 maxretry = 10 bantime = 1800
SSHãå éšãããã¯ãŒã¯ã«å¯ŸããŠã®ã¿éããŠããå Žåãæåã®ã«ãŒã«ãåé€ã§ããŸãã ãŸã ãè¿œå ã®ãžã§ã¹ãã£ãŒã¯ãããŸãã-ã«ãŒã«ã¯ãã®ãŸãŸäœ¿çšã§ããŸãã smtpã®ãã«ãŒããã©ãŒã¹ä¿è·ãæãåºãããŠãããurbainã«æè¬ããŸãã
chkconfig fail2ban on && /etc/init.d/fail2ban start

Dovecotã«autocreateãã©ã°ã€ã³ãå«ããã®ã§ããã¡ã€ã³ãšã¡ãŒã«ããã¯ã¹ãäœæããããã«ãPostfixadminãä»ããŠããŸãã¯ã³ã³ãœãŒã«ã§INSERT INTOãå®è¡ããããšã«ãããããããããŒã¿ããŒã¹ã«å ¥åããã ãã§ãã æåã®èªèšŒãŸãã¯åä¿¡ããæåã®æåã§ããã£ã¬ã¯ããªæ§é ãèªåçã«äœæãããŸãã
ããŸããŸãªããŒãºã§pop3ãimapãsmtpããã¹ããã
- POP3ãã°ã€ã³ã®ãã¹ã
telnet 127.0.0.1 110 user test pass testpassword UIDL
- IMAPãã°ã€ã³ã®ãã¹ã
telnet 127.0.0.1 143 1 LOGIN test testpassword 1 SELECT INBOX
- èªèšŒãªãã§SMTPããã¹ããã
telnet 127.0.0.1 25 #220 mail.domain.tld ESMTP Postfix helo darling #250 mail.domain.tld MAIL FROM: root@localhost #250 2.1.0 Ok RCPT TO: test@example.com #250 2.1.5 Ok DATA #354 End data with <CR><LF>.<CR><LF> this is text message . #250 2.0.0 Ok: queued as E3BA1A15FA quit #221 2.0.0 Bye
- SSLã䜿çšããã«èªèšŒã䜿çšããŠSMTPã
ãã¹ãããAUTH LOGINã®åŸã«é 次éä¿¡ãããbase64ãã¹ãã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããããªã³ãŒãããŸããã³ãŒã334ã®çä¿¡èŠä»¶ãbase64ã§ãšã³ã³ãŒããããŸãã
telnet 127.0.0.1 25 #220 mail.domain.tld ESMTP Postfix ehlo darling #250-mail2.dautkom.lv #250-PIPELINING #250-SIZE 51200000 #250-STARTTLS #250-AUTH PLAIN LOGIN #250-AUTH=PLAIN LOGIN #250-ENHANCEDSTATUSCODES #250-8BITMIME #250 DSN AUTH LOGIN #334 VXNlcm5hbWU6 dGVzdA== #334 UGFzc3dvcmQ6 dGVzdHBhc3N3b3Jk #235 2.7.0 Authentication successful
- SSLã䜿çšããSMTPã®ãã¹ã
# credentials perl -MMIME::Base64 -e 'print encode_base64("\000test\@example.com\000testpassword")' # # AHRlc3RAZXhhbXBsZS5jb20AdGVzdHBhc3N3b3Jk openssl s_client -starttls smtp -connect 127.0.0.1:587 -crlf -ign_eof # # EHLO darling #250-mail.example.com #250-PIPELINING #250-SIZE 51200000 #250-ENHANCEDSTATUSCODES #250-8BITMIME #250 DSN AUTH PLAIN AHRlc3RAZXhhbXBsZS5jb20AdGVzdHBhc3N3b3Jk #235 2.7.0 Authentication successful
ãŠã€ã«ã¹å¯Ÿçä¿è·ã®ãã¹ã
- amavis . , . , . :
cd /usr/share/doc/amavisd-new-2.8.0/test-messages perl -pe 's/./chr(ord($&)^255)/sge' <sample.tar.gz.compl | zcat | tar xvf -
- :
sendmail -i your-address@example.com < sample-virus-simple.txt sendmail -i your-address@example.com < sample-spam-GTUBE-junk.txt
( /var/log/maillog). , verbose /etc/dovecot/conf.d/10-logging.conf log-level /etc/amavisd/amavisd.conf .

ããã§
- æ§æãã¡ã€ã«ãæäœããã«ã¯ãgitã䜿çšããŠã/ etcãã£ã¬ã¯ããªãŒããªããžããªãŒã«ããŸãããã®ã¢ãããŒãã«ãããæè¡éšéã®åŸæ¥å¡éã§æ§æãç°¡åã«ãããããšãã§ããæ§æããã»ã¹ã段éçã«å¶åŸ¡ã§ããŸãããã®ãããªçµ±åãããã·ã¹ãã ãã¡ãŒã«ãµãŒããŒãšããŠäœ¿çšããå Žåããã®æ¹æ³ã¯éåžžã«äŸ¿å©ã§ãã
- c courier dovecot. , . wiki2.dovecot.org/Migration/Courier . POP3 UIDL , . , .
find . -name "courier*" -delete
- iptables â .
- CentOS rsyslog , syslog-ng EPEL. , syslog-ng â .
- vacation , dovecot Sieve «» . â « ». .
æ§æãã¡ã€ã«ã®ã»ãŒå®å šãªã¢ã»ã³ããªãgithubã«é 眮ããŠãå¿ èŠã«å¿ããŠãæ§æãã¡ã€ã«ã«åå²ããŠã§ã¯ãªãå šäœãšããŠã¢ã¯ã»ã¹ã§ããããã«ããŸããããã®èšäºã§ã¯ããã¹ãŠã®ã·ã¹ãã ã®åã段éçãªã»ããã¢ãããã·ãã¥ã¬ãŒãããŠããã¡ã€ã«ãåŸã ã«ç·šéããŸãããã»ãšãã©ã®ããã¥ã¢ã«ã§ã¯ããã¡ã€ã«ã¯ããã«æäŸãããèªè ã¯èªåãäœããã©ããŒããŠããŠã©ã®ããã«ãªã³ã¯ãããŠããããç¥ãããšãã§ããŸããã§ãããç§ã¯ãããåãé€ãã段éçãªã»ããã¢ãããèŠããããšããŸãããããããããã¯èª°ãã«åœ¹ç«ã€ã§ãããããããã€ã³ã¹ããŒã«ã®åæ段éã§ãã
ããšãããäžåºŠåŒ·èª¿ããŸããã¡ãŒã«ãµãŒããŒã§éåžžã«æãŸããç£èŠæ¥ç¶ãèæ ®ããªããŠããäœæ¥ãçµäºããããšã¯ã§ããŸãããã¹ãã 察çããªã·ãŒã培åºçã«èª¿æŽããå¿ èŠããããŸããè¿œå ã®ãªã¬ãŒã䜿çšããäºå®ãããå Žåã¯ãèŠæ±ã確å®ããå¿ èŠããããŸããå¶éãªã©ã®ãã©ã¡ãŒã¿ã確èªããå¿ èŠããããŸãã
ãããã倧èŠæš¡ãªã¬ã€ããäœæããéã®ãã®ãã¹ããã³ã®æ®ãã®éšåã¯å®å šã§ãããšèããããšãã§ããŸããã¡ãŒã«ãµãŒããŒã§ã¯ãªãããåå¿è ãåãã§ã¯ãªãè³æãå ¬éããäºå®ã§ãããç«ã«ã€ããŠãã¬ãŒãã³ã°ããããšã«ããŸããã誰ããã®å Žæãèªã¿ãŸããã...ããŒãš...ããªãã®å¿èãããããŸããã§ãããåºçç©ãããã€ãã®éšåã«åããã®ã¯äžé©åã ãšæãããŸããã