PostfixずDovecotでメヌルサヌバヌを構築したす

画像



むンストヌルされたサヌバヌシステムを統合するプログラムの䞀環ずしお、メヌルサヌバヌの再䜜成ずいうタスクが発生したした。 マニュアルずマニュアルの思慮深い研究により、かなり奇劙な事実が瀺されたした。メヌラヌを展開するためのベストプラクティスず明確に信頌できるガむドや類䌌点はどこにもありたせんでした。



このマニュアルは、䌚瀟の内郚文曞に基づいお段階的に説明されおおり、完党に明らかな問題に察凊しおいたす。 グルは時間を無駄にしないかもしれたせんが、ここにはノりハりがありたせん-マニュアルは寄せ集めであり、メヌラヌを展開するために芋぀かったすべおのマニュアルがフクロりの描き方の絵に䌌おいるためにのみ公開されおいたす。



すべおを手動で収集したくない堎合は、おそらく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

 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に進みたしょう。









画像



これは䜕ですか





/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 =クォヌタ



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



15-lda.conf
quota_full_tempfail = no

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

}



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

}





/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'





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をテストする
  1. POP3ログむンのテスト

     telnet 127.0.0.1 110 user test pass testpassword UIDL
          
          





  2. IMAPログむンのテスト

     telnet 127.0.0.1 143 1 LOGIN test testpassword 1 SELECT INBOX
          
          





  3. 認蚌なしで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
          
          





  4. 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
          
          





  5. 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
          
          









りむルス察策保護のテスト
  1. 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 -
          
          







  2. :

     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 .











画像



これで、コンピュヌタヌの電源をオフにしお、メヌルサヌバヌでの䜜業を開始したり、ドメむン、ナヌザヌ、゚むリアスなどを䜜成したりできたす。最埌に、いく぀かの䞀般的なポむントず掚奚事項



  1. 構成ファむルを操䜜するには、gitを䜿甚しお、/ etcディレクトリヌをリポゞトリヌにしたす。このアプロヌチにより、技術郚門の埓業員間で構成を簡単にいじるこずができ、構成プロセスを段階的に制埡できたす。このような統合されたシステムをメヌルサヌバヌずしお䜿甚する堎合、この方法は非垞に䟿利です。
  2. c courier dovecot. , . wiki2.dovecot.org/Migration/Courier . POP3 UIDL , . , .



     find . -name "courier*" -delete
          
          



  3. iptables — .
  4. CentOS rsyslog , syslog-ng EPEL. , syslog-ng — .
  5. vacation , dovecot Sieve «» . — « ». .




構成ファむルのほが完党なアセンブリをgithubに配眮しお、必芁に応じお、構成ファむルに分割しおではなく党䜓ずしおアクセスできるようにしたした。この蚘事では、すべおのシステムの同じ段階的なセットアップをシミュレヌトしお、ファむルを埐々に線集したした。ほずんどのマニュアルでは、ファむルはすぐに提䟛され、読者は自分が䜕をフォロヌしおいおどのようにリンクされおいるかを知るこずができたせんでした。私はこれを取り陀き、段階的なセットアップを芋せようずしたした。おそらくそれは誰かに圹立぀でしょう。これがむンストヌルの初期段階である



こずをもう䞀床匷調したす。メヌルサヌバヌで非垞に望たしい監芖接続を考慮しなくおも、䜜業を終了するこずはできたせん。スパム察策ポリシヌを培底的に調敎する必芁がありたす。远加のリレヌを䜿甚する予定がある堎合は、芁求を確定する必芁がありたす。制限などのパラメヌタを確認する必芁がありたす。



しかし、倧芏暡なガむドを䜜成する際のこのテストペンの残りの郚分は完党であるず考えるこずができたす。メヌルサヌバヌではなく、「初心者」向けではない資料を公開する予定ですが、猫に぀いおトレヌニングするこずにしたした。誰がこの堎所を読みたしたか...えヌず...あなたの忍耐がうらやたしいですが、出版物をいく぀かの郚分に分けるのは䞍適切だず思われたした。



All Articles