CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS
Talaan ng mga Nilalaman:
- Mga kinakailangan
- I-install ang Postfix at Dovecot
- Pag-configure ng Postfix
- I-configure ang Dovecot
- Konklusyon
Ito ang pangalawang post ng aming Pag-set up at pag-configure ng serye ng server ng mail. Sa post na ito ipapakita namin sa iyo kung paano i-install at i-configure ang Postfix at Dovecot, ang dalawang pangunahing sangkap ng aming system ng mail.
Ang Postfix ay isang open-source mail transfer agent (MTA), isang serbisyo na ginamit upang magpadala at tumanggap ng mga email. Ang Dovecot ay isang IMAP / POP3 server at sa aming pag-setup ay hahawakan din nito ang lokal na paghahatid at pagpapatunay ng gumagamit.
Ang tutorial na ito ay isinulat para sa Ubuntu 16.04, gayunpaman ang parehong mga hakbang na may maliit na pagbabago ay dapat gumana sa anumang mas bagong bersyon ng Ubuntu.
Mga kinakailangan
Bago magpatuloy sa tutorial na ito, siguraduhing naka-log in ka bilang isang gumagamit na may mga pribilehiyo ng sudo.
I-install ang Postfix at Dovecot
Ang mga pakete ng Dovecot sa mga default na repositories ng Ubuntu ay hindi na napapanahon. Upang samantalahin ang module na
imap_sieve
ay mai-install namin ang Dovecot mula sa repositoryo ng komunidad ng Dovecot.
Idagdag ang repositoryo GPG key sa iyong apt na pinagkukunan ng susi sa sumusunod na wget na utos:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Paganahin ang imbakan ng komunidad ng Dovecot gamit ang sumusunod na utos:
echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list
sudo apt update
sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql
Pag-configure ng Postfix
Mag-setup kami ng Postfix upang magamit ang mga virtual mailbox at domain.
Magsimula sa pamamagitan ng paglikha ng mga file ng pagsasaayos ng
sql
na magtuturo sa postfix kung paano ma-access ang MySQL database, na nilikha sa unang bahagi ng seryeng ito.
sudo mkdir -p /etc/postfix/sql
Buksan ang iyong text editor at lumikha ng mga sumusunod na file:
/etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin 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 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
Kapag nilikha ang mga file ng pagsasaayos ng SQL, i-update ang pangunahing file ng pagsasaayos ng postfix upang isama ang impormasyon tungkol sa mga virtual na domain, mga gumagamit, at mga aliases na nakaimbak sa database ng MySQL.
sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
Ipinapakita ng utos ng postconf ang aktwal na mga halaga ng mga parameter ng pagsasaayos, nagbabago ng mga halaga ng mga parameter ng pagsasaayos, o ipinapakita ang iba pang impormasyon sa pagsasaayos tungkol sa Postfix mail system.
Ang lokal na ahente ng paghahatid ay ihahatid ang mga papasok na email sa mga mailbox ng mga gumagamit. Patakbuhin ang sumusunod na utos upang itakda ang serbisyo ng LMTP ng Dovecot bilang isang default na paghahatid ng mail mail:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Itakda ang mga parameter ng TL gamit ang naunang nabuo na I-encrypt ang SSL certificate:
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'
I-configure ang napatunayan na mga setting ng SMTP at i-off ang pagpapatunay sa Dovecot:
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
Kailangan din nating i-edit ang Postfix master configuration file
master.cf
at paganahin ang submission port (
587
) at smtps port (
465
).
Buksan ang file gamit ang iyong text editor at uncomment / i-edit ang mga sumusunod na linya:
/etc/postfix/master.cf
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING
I-restart ang serbisyo ng postfix para sa mga pagbabago na magkakabisa.
sudo systemctl restart postfix
Sa puntong ito ay matagumpay mong na-configure ang serbisyo ng Postfix.
I-configure ang Dovecot
Sa bahaging ito ay i-configure namin ang Dovecot upang tumugma sa aming pag-setup. Tiyaking na-edit mo ang mga linya na naka-highlight sa dilaw.
Magsimula sa pamamagitan ng pag-configure ng file ng
dovecot-sql.conf.ext
na nagtuturo kay Dovecot kung paano ma-access ang database at kung paano mahanap ang impormasyon tungkol sa mga email account.
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'
Huwag kalimutang gamitin ang tamang mga kredensyal ng MySQL (dbname, user at password).
Susunod, i-edit ang
conf.d/10-mail.conf
file at i-edit ang sumusunod na mga variable:
… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…
Upang gawin ang gawaing pagpapatunay, buksan ang
conf.d/10-auth.conf
, i-edit ang mga sumusunod na linya at isama ang
auth-sql.conf.ext
file:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
Buksan ang
conf.d/10-master.conf
file, at baguhin ito tulad ng sumusunod:
… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = 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 }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…
Buksan ang
conf.d/10-ssl.conf
at paganahin ang SSL / TLS.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
Buksan ang
conf.d/20-imap.conf
file at buhayin ang
imap_quota
plugin:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Buksan ang
conf.d/20-lmtp.conf
at i-edit ito tulad ng sumusunod:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Tukuyin ang default na mga Mailbox sa
conf.d/20-lmtp.conf
file:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
Mayroong dalawang magkakaibang uri ng mga sukat ng quota, ang isa ay nakatakda para sa buong domain at ang iba pang bawat mailbox ng gumagamit. Sa nakaraang bahagi ng seryeng ito ay pinagana natin ang suporta ng quota sa PostfixAdmin na nangangahulugang ang impormasyon ng quota ay maiimbak sa database ng PostfixAdmin.
Ngayon kailangan nating i-configure ang Dovecot upang kumonekta sa database, upang mahawakan ang mga limitasyon ng quota at magpatakbo ng isang script na nagpapadala ng isang mail sa gumagamit kapag ang quota ng gumagamit ay lumampas sa isang tinukoy na limitasyon. Upang gawin ito buksan ang
conf.d/90-quota.conf
file at baguhin ito tulad ng mga sumusunod:
plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }
Kailangan din nating sabihin sa dovecot kung paano ma-access ang diksyonaryo ng quota SQL. Buksan ang file ng
dovecot-dict-sql.conf.ext
at i-edit ang mga sumusunod na linya:
… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }…
Siguraduhing ginagamit mo ang tamang mga kredensyal ng MySQL (dbname, user at password).
Lumikha ng sumusunod na script ng shell na magpapadala ng isang email sa gumagamit kung ang quota nito ay lumampas sa isang tinukoy na limitasyon:
/usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF
Gawin ang naisakatuparan ng script sa pamamagitan ng pagpapatakbo ng sumusunod na utos ng
chmod
:
sudo chmod +x /usr/local/bin/quota-warning.sh
Sa wakas i-restart ang serbisyo ng dovecot para sa mga pagbabago na magkakabisa.
sudo systemctl restart dovecot
Konklusyon
Sa ngayon dapat kang magkaroon ng isang ganap na functional na sistema ng mail. Sa susunod na bahagi ng seryeng ito, ipapakita namin sa iyo kung paano i-install at isama ang Rspamd.
mail server postfix dovecotAng post na ito ay isang bahagi ng Pag-set up at pag-configure ng serye ng server ng mail.
Iba pang mga post sa seryeng ito:
• Mag-set up ng isang mail server na may PostfixAdmin • I-install at i-configure ang Postfix at Dovecot • I-install at Isama ang Rspamd • I-install at I-configure ang Roundcube WebmailAng isa pang kasanayan na lumalaki ang katanyagan ay ang paggamit ng mga video game bilang mga tool sa pagsasanay. Ang maraming kaligtasan ng publiko at mga organisasyong militar ay gumagamit ng mga video game upang gayahin ang mga kondisyon ng field. (Halimbawa, ang labanan ng Amerikanong Hukbo ng digmaan, na binuo ng US Army, ay naging isang napakalaking matagumpay na tool sa pagrerekord para sa militar.) Ngunit hindi mo kailangang i-shoot ang Nazis upang makahanap ng halaga para sa mga laro s
Sa Regence Blue Cross / Blue Shield sa Portland, Oregon, ang mga miyembro ng IT department ay nakakakuha ng virtual na "mga token" para sa pagganap ilang mga gawain: Ang pag-reset ng password ng gumagamit ay nagkakahalaga ng 2 mga token. Ang pagpapatupad ng isang cost-saving na ideya ay kumikita ng 30 token. Ang mga empleyado ay maaaring "gastusin" ang mga token na ito upang maglaro ng mga laro ng mabilis at batay sa pagkakataon. Ang mga laro ay higit na katulad sa mga slot machine: Ang mga toke
Paminsan-minsan ang mga update ay napakahalaga, ngunit ang pinaka-tila tulad ng tinkering. Ang PS3's Disyembre 2, 2008 v2.53 update ay nagdagdag ng full-screen na suporta para sa Adobe Flash. Ang pag-update ng Nobyembre 5, 2008 v.2.52 ay nagdala ng tatlong mga pag-aayos sa maliit na glitch. Ang Hulyo 29, 2008 v2.42-update ang enigmatically "pagbutihin [d] ang kalidad ng pag-playback ng ilang PlayStation 3 at PlayStation format software." Ang pag-update ng Hulyo 8, 2008 v2.41 ay naayos
Huwag ako mali, sa tingin ko talagang kahanga-hanga na nais ng Sony na maglinis ng ilang frequency. Ngunit hindi dapat isang kumpanya na may mga mapagkukunan ng Sony at isang predictable hardware development platform malinaw na ang windshield maagang ng panahon?
"Ang bawat tao'y nagsasalita tungkol sa kung paano mga consumer hindi alam kung ano ang nangyayari, at kung alam nila kung ano ang nangyayari, sila ay magiging horrified, "sabi ni Rubin. "Ang dahilan kung bakit hindi nila alam ang tungkol dito ay hindi sila nag-aalinlangan upang malaman ang tungkol dito, at ang dahilan kung bakit hindi sila nag-aalinlangan upang malaman ang tungkol dito ay dahil wala nang masama ang nangyari."
[Karagdagang pagbabasa: Ang pinakamahusay TV streaming services]







