Get the App
SLTechnology News&Howtos  ›  Database  › 

Postfix, dovecot configuration

Shulou Source: shulou.com Published: 2022-06-01 16:09:56 10月01日 Update

(1) postfix configuration

One configuration dns

1 yum install bind-y

2 systemctl start named

3 vim / etc/named.conf

Content:

Options {

/ / listen-on port 53 {127.0.0.1;}

/ / listen-on-v6 port 53 {:: 1;}

Directory "/ var/named"

Dump-file "/ var/named/data/cache_dump.db"

Statistics-file "/ var/named/data/named_stats.txt"

Memstatistics-file "/ var/named/data/named_mem_stats.txt"

/ / allow-query {localhost;}

Whether dnssec-validation no;### is legal, that is, whether it can act as a dns on the public network. If there is no application, write no###.

4 vim / etc/named.rfc1912.zones

Content:

Zone "westos.com" IN {

Type master

File "westos.com.zone"

Allow-update {none;}

}

Zone "qq.com" IN {

Type master

File "qq.com.zone"

Allow-update {none;}

}

5 cd / var/named/

6 cp-p named.localhost westos.com.zone

7 vim westos.com.zone

Content:

$TTL 1D

@ IN SOA dns.westos.com. Root.westos.com. (

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS dns.westos.com.

Dns A 172.25.254.112

Westos.com. MX 1 172.25.254.112.

8 cp-p westos.com.zone qq.com.zone

9 vim qq.com.zone

Content:

$TTL 1D

@ IN SOA dns.qq.com. Root.qq.com. (

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS dns.qq.com.

Dns A 172.25.254.112

Qq.com. MX 1 172.25.254.212.

10 systemctl restart named

11 systemctl stop firewalld.service

12 systemctl disable firewalld.service

Basic E-mail delivery

1) postfix definition:

Postfix provides smtp protocol for mail delivery. The default port is 25 and the log is / var/log/maillog.

MDA: "Mail sending Agent"

2) important Postfix configuration instructions

1 myorigin:

Rewrite locally published e-mail messages so that they appear to be from this domain. This helps ensure that the response is returned to the inbound mail server

Default: myorigin = $myhostname

2 inet_interfaces:

Controls the network interface on which Postfix listens for incoming e-mail. If set to loopback-only, only listen for 127.0.0.1 and:: 1

If set to all, listen on all network interfaces. You can also specify a specific address.

Default: inet_interfaces = localhost

3 mydestination:

Emails received at these domains are delivered to MDA for local delivery.

Default: mydestination = $myhostname, localhost.$mydomain, localhost

4 mynetworks

A comma-separated list of IP addresses and networks (in CIDR notation). These addresses and networks can be forwarded to the

Any location without further authentication.

Default: mynetworks = 127.0.0.0Comp8

3) send mail

Email sender:

1 vim / etc/postfix/main.cf### Edit the main configuration file of postfix #

Content:

116 inet_interfaces = Network interface with the all###25 port up by default, Postfix listens only for incoming emails from the local host. To reconfigure postfix to receive messages sent from a remote host

Local mail sent, inet_interfaces = all### must be set

76 myhostname = westos-mail.westos.com### specifies the mta host name #

83 mydomain = westos.com### specifies the domain name of mta #

99 myorigin = westos.com### specifies the end of the message source (the character content after @)

Mydestination = $myhostname, $mydomain, localhost### accept the specified # of the end character of the message

2 systemctl restart postfix.service### restart service #

3. Systemctl stop firewalld###, turn off firewall #

4 mail root@qq.com### send email #

Subject: hello

Hello

. # to "." Indicates the end #

EOT

5 mailq (or postqueue-p) # displays a list of all outgoing messages that have been queued #

6 postqueue-fallow email # send all queued messages immediately again #

The receiving end:

1 vim / etc/postfix/main.cf

Content:

116 inet_interfaces = all # the network interface opened on port 25. By default, Postfix listens only for incoming emails from the local host. To reconfigure postfix to receive messages sent from a remote host

Local mail sent, inet_interfaces = all### must be set

76 myhostname = qq-mail.westos.com # specify the mta host name #

83 mydomain = qq.com # specify the domain name of mta #

99 myorigin = $mydomain # specify the end of the message source (the character content after @)

Mydestination = $myhostname, $mydomain, localhost # accept the specified # of the end character of the message

2 systemctl restart postfix.service

3 systemctl stop firewalld.service

4. Mail### to view the obtained email #

The process is as follows:

Email end:

[root@westos-mail named] # vim / etc/postfix/main.cf

116 inet_interfaces = network interface with all###25 port open #

76 myhostname = westos-mail.westos.com### specifies the mta host name #

83 mydomain = westos.com### specifies the domain name of mta #

99 myorigin = westos.com### specifies the end of the message source (the character content after @)

Mydestination = $myhostname, $mydomain, localhost### accept the specified # of the end character of the message

[root@westos-mail named] # systemctl restart postfix.service

[root@westos-mail named] # systemctl stop firewalld

[root@westos-mail named] # mail root@qq.com

Subject: hello

Hello

.

EOT

[root@westos-mail named] # mailq

Mail queue is empty

[root@westos-mail named] #

The receiving end:

[root@qq-mail ~] # vim / etc/postfix/main.cf

116 inet_interfaces = all # Network interface opened on port 25 #

76 myhostname = qq-mail.qq.com # specify the mta host name #

83 mydomain = qq.com # specify the domain name of mta #

99 myorigin = $mydomain # specify the end of the message source (the character content after @)

Mydestination = $myhostname, $mydomain, localhost # accept the specified # of the end character of the message

[root@qq-mail ~] # systemctl restart postfix.service

[root@qq-mail ~] # systemctl stop firewalld.service

[root@qq-mail ~] # mailq

Mail queue is empty

You have mail in / var/spool/mail/root

[root@qq-mail ~] # cat / var/spool/mail/root

From root@westos.com Sat May 20 03:13:41 2017

Return-Path:

X-Original-To: root@qq.com

Delivered-To: root@qq.com

Received: from westos-mail.westos.com (unknown [172.25.254.112])

By qq-mail.westos.com (Postfix) with ESMTP id 3442417E84B

For; Sat, 20 May 2017 03:13:41-0400 (EDT)

Received: by westos-mail.westos.com (Postfix, from userid 0)

Id CD43D2462AE; Sat, 20 May 2017 03:13:40-0400 (EDT)

Date: Sat, 20 May 2017 03:13:40-0400

To: root@qq.com

Subject: hello

User-Agent: Heirloom mailx 12.5 7-5-10

MIME-Version: 1.0

Content-Type: text/plain; charset=us-ascii

Content-Transfer-Encoding: 7bit

Three mail aliases

The receiving end:

1 vim / etc/aliases

Content:

Admin: root

Alias, real name.

2 postalias / etc/aliases### takes effect immediately #

3 systemctl restart postfix.service### restart service #

Test:

Email end:

1 mail admin@qq.com

Subject: haa

Haa

.

EOT

2 mailq

The receiving end:

Mail

The process is as follows:

Email end:

[root@westos-mail ~] # mail admin@qq.com

Subject: haa

Haa

.

EOT

[root@westos-mail ~] # mailq

Mail queue is empty

Email recipient:

[root@qq-mail ~] # vim / etc/aliases

[root@qq-mail ~] # postalias / etc/aliases # effective immediately #

[root@qq-mail ~] # systemctl restart postfix.service

[root@qq-mail ~] # mail

Heirloom Mail version 12.5 7-5-10. Type? For help.

"/ var/spool/mail/root": 3 messages 1 new 3 unread

U 1 root Sat May 20 03:13 22 amp 741 "hello"

U 2 root Sat May 20 03:25 22 amp 747 "world"

> N 3 root Sat May 20 04:09 21 amp 731 "haa"

& Q

Held 3 messages in / var/spool/mail/root

You have mail in / var/spool/mail/root

Four e-mails are sent in groups

The receiving end:

1 vim / etc/aliases

Content:

Moreuser:: include:/etc/postfix/moreuser

Alias

2 vim / etc/postfix/moreuser

Content:

Student

Root

3 postalias / etc/aliases### takes effect immediately #

4 systemctl restart postfix.service### restart service #

Test:

Email end:

1 mail moreuser@qq.com

Subject: hello

Kaa

.

EOT

2 mailq

Email recipient:

1 mail-u student # View student email #

2 mail-u root # View root email #

The process is as follows:

Email end:

[root@westos-mail ~] # mail moreuser@qq.com

Subject: hello

Kaa

.

EOT

[root@westos-mail ~] # mailq

Mail queue is empty

[root@qq-mail ~] # vim / etc/aliases

Moreuser:: include:/etc/postfix/moreuser

Alias

[root@qq-mail ~] # vim / etc/postfix/moreuser

Student

Root

Email recipient:

[root@qq-mail ~] # postalias / etc/aliases

[root@qq-mail ~] # systemctl restart postfix.service

[root@qq-mail ~] # > / var/spool/mail/root

[root@qq-mail ~] # mail-u student # View student email #

No mail for student

[root@qq-mail ~] # mail-u root # View root email #

No mail for root

[root@qq-mail] # mail-u root

Heirloom Mail version 12.5 7-5-10. Type? For help.

"/ var/mail/root": 1 message 1 new

N 1 root Sat May 20 04:12 24 amp 868 "hello"

& Q

Held 1 message in / var/mail/root

[root@qq-mail] # mail-u student

Heirloom Mail version 12.5 7-5-10. Type? For help.

"/ var/mail/student": 1 message 1 new

> N 1 root Sat May 20 04:12 24 amp 871 "hello"

& Q

Held 1 message in / var/mail/student

You have mail in / var/spool/mail/root

Fifth, test the mail service through the remote host

1 telnet 172.25.254.112 25 # connection to port 25 # of 172.25.254.112

Trying 172.25.254.112...

Connected to 172.25.254.112.

Escape character is'^]'.

220 westos-mail.westos.com ESMTP Postfix

Ehlo hello # say hello to the 112 host # #

250-westos-mail.westos.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

Mail from:root@westos.com # email sent from root@westos.com #

250 2.1.0 Ok

Rcpt to:root@qq.com # email to root@qq.com###

250 2.1.5 Ok

Data # email content #

354 End data with.

Hello world

Hai

. # # to "." Indicates the end #

250 2.0.0 Ok: queued as EEB672462AF

Six deny remote host connection

1 postconf-e "smtpd_client_restrictions = check_client_access hash:/etc/postfix/access" # use the smtpd_client_restrictions parameter to detect / etc/postfix/access, but what is really detected is the encrypted file access.db####

2 vim / etc/postfix/main.cf

3 vim / etc/postfix/access### edits the host you refused to connect to #

Content:

172.25.254.12 REJECT

4 postmap / etc/postfix/access # encryption #

5 cd / etc/postfix/### encrypted files in this directory #

6 systemctl restart postfix.service

Test:

Telnet 172.25.254.112 25

The process is as follows:

[root@westos-mail ~] # postconf-d | grep client### displays the default value of client # #

Broken_sasl_auth_clients = no

Local_header_rewrite_clients = permit_inet_interfaces

Parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps

Postscreen_client_connection_count_limit = $smtpd_client_connection_count_limit

Qmqpd_authorized_clients =

Qmqpd_client_port_logging = no

Relay_clientcerts =

Smtpd_authorized_verp_clients = $authorized_verp_clients

Smtpd_authorized_xclient_hosts =

Smtpd_client_connection_count_limit = 50

Smtpd_client_connection_rate_limit = 0

Smtpd_client_event_limit_exceptions = ${smtpd_client_connection_limit_exceptions:$mynetworks}

Smtpd_client_message_rate_limit = 0

Smtpd_client_new_tls_session_rate_limit = 0

Smtpd_client_port_logging = no

Smtpd_client_recipient_rate_limit = 0

Smtpd_client_restrictions =

Unknown_client_reject_code = 450

[root@westos-mail ~] # postconf-e "smtpd_client_restrictions = check_client_access hash:/etc/postfix/access" # use the smtpd_client_restrictions parameter to detect / etc/postfix/access, but what is really detected is the encrypted file access.db####

[root@westos-mail ~] # vim / etc/postfix/main.cf

[root@westos-mail ~] # vim / etc/postfix/access

[root@westos-mail ~] # vim / etc/postfix/access

[root@westos-mail ~] # postmap / etc/postfix/access # encryption #

[root@westos-mail ~] # ls

Anaconda-ks.cfg Documents Music Public Videos

Desktop Downloads Pictures Templates

[root@westos-mail ~] # cd / etc/postfix/

[root@westos-mail postfix] # ls

Access generic master.cf virtual

Access.db header_checks relocated

Canonical main.cf transport

[root@westos-mail postfix] #

Test:

[root@foundation12 Desktop] # telnet 172.25.254.112 25

Trying 172.25.254.112...

Connected to 172.25.254.112.

Escape character is'^]'.

220 westos-mail.westos.com ESMTP Postfix

Mail from:root@westos.com

250 2.1.0 Ok

Rcpt to:root@qq.com

554 5.7.1: Client host rejected: Access denied

Q

502 5.5.2 Error: command not recognized

Quit

221 2.0.0 Bye

Connection closed by foreign host.

[root@foundation12 Desktop] #

Seventh, restrict remote host connection users from sending

Connected hosts:

1 postconf-d | grep sender### view parameter #

2 postconf-e "smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender" # use smtpd_sender_restrictions parameter to detect

/ etc/postfix/sender file #

3. Vim / etc/postfix/sender### edit file #

Content:

Student@westos.com REJECT### refuses student@westos.com users to send #

4 postmap / etc/postfix/sender### encryption #

5 cd / etc/postfix/### encrypted files are in this directory

6 systemctl restart postfix.service### restart service #

The process is as follows:

[root@westos-mail ~] # postconf-d | grep sender

Address_verify_sender = $double_bounce_sender

Address_verify_sender_dependent_default_transport_maps = $sender_dependent_default_transport_maps

Address_verify_sender_dependent_relayhost_maps = $sender_dependent_relayhost_maps

Address_verify_sender_ttl = 0s

Canonical_classes = envelope_sender, envelope_recipient, header_sender, header_recipient

Double_bounce_sender = double-bounce

Lmtp_sender_dependent_authentication = no

Masquerade_classes = envelope_sender, header_sender, header_recipient

Proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps

Sender_bcc_maps =

Sender_canonical_classes = envelope_sender, header_sender

Sender_canonical_maps =

Sender_dependent_default_transport_maps =

Sender_dependent_relayhost_maps =

Smtp_sender_dependent_authentication = no

Smtpd_reject_unlisted_sender = no

Smtpd_sender_login_maps =

Smtpd_sender_restrictions =

Unverified_sender_defer_code = 450

Unverified_sender_reject_code = 450

Unverified_sender_reject_reason =

Unverified_sender_tempfail_action = $reject_tempfail_action

[root@westos-mail ~] # postconf-e "smtpd_sender_restrictions = check_sender_acess hash:/etc/postfix/sender"

[root@westos-mail ~] # vim / etc/postfix/sender

[root@westos-mail ~] # postmap / etc/postfix/sender

[root@westos-mail ~] # systemctl restart postfix.service

[root@westos-mail ~] # systemctl start named

[root@westos-mail ~] # systemctl stop firewalld

[root@westos-mail postfix] # ls

Access canonical header_checks master.cf sender transport

Access.db generic main.cf relocated sender.db virtual

Test:

[kiosk@foundation12 Desktop] $telnet 172.25.254.112 25

Trying 172.25.254.112...

Connected to 172.25.254.112.

Escape character is'^]'.

220 westos-mail.westos.com ESMTP Postfix

Mail from:student@westos.com

250 2.1.0 Ok

Rcpt to:root@westos.com

554 5.7.1: Client host rejected: Access denied

Quit

221 2.0.0 Bye

Connection closed by foreign host.

[kiosk@foundation12 Desktop] $

Eight restrict users to receive

The receiving end:

1 postconf-e "smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recip"

2 vim / etc/postfix/recip

Content:

Westos@westos.com REJECT### restricts westos@wests.com users to receive #

3 postmap / etc/postfix/recip # encryption #

4 systemctl restart postfix.service

The process is as follows:

[root@westos-mail ~] # postconf-e "smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recip"

[root@westos-mail ~] # vim / etc/postfix/recip

Westos@westos.com REJECT

[root@westos-mail ~] # postmap / etc/postfix/recip

[root@westos-mail ~] # systemctl restart postfix.service

Test:

[kiosk@foundation12 Desktop] $telnet 172.25.254.112 25

Trying 172.25.254.112...

Connected to 172.25.254.112.

Escape character is'^]'.

220 westos-mail.westos.com ESMTP Postfix

Mail from:westos@westos.com

250 2.1.0 Ok

Rcpt to:root@westos.com

250 2.1.5 Ok

Data

354 End data with.

Hello

Hello

.

250 2.0.0 Ok: queued as D00F9EAC27

Mail from:root@westos.com

250 2.1.0 Ok

Rcpt to:westos@westos.com

554 5.7.1: Recipient address rejected: Access denied

421 4.4.2 westos-mail.westos.com Error: timeout exceeded

Connection closed by foreign host.

Nine inbound address translation

Email sender:

1 postconf-e "smtp_generic_maps = hash:/etc/postfix/generic"

2 vim / etc/postfix/generic

3 postmap / etc/postfix/generic

Westos@westos.com hello@haa.com

Real user virtual user

4 postmap / etc/postfix/generic### encryption #

Test:

Su-westos

Mail root@qq.com

The process is as follows:

Email sender:

[root@westos-mail ~] # postconf-d | grep generic

Lmtp_generic_maps =

Proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps

Smtp_generic_maps =

[root@westos-mail ~] # postconf-e "smtp_generic_maps = hash:/etc/postfix/generic"

[root@westos-mail ~] # vim / etc/postfix/generic

[root@westos-mail ~] # postmap / etc/postfix/generic

Test:

Email sender:

[root@westos-mail ~] # su-westos

[westos@westos-mail ~] $mail root@qq.com

Subject: hello hello

Hello

.

EOT

[westos@westos-mail ~] $mailq

Mail queue is empty

Recipient of the message:

[root@qq-mail ~] # mail

Heirloom Mail version 12.5 7-5-10. Type? For help.

"/ var/spool/mail/root": 3 messages 1 new

1 root Sat May 20 04:12 25 amp 879 "hello"

2 root@westos.com Sat May 20 04:36 15/510

> N 3 hello@haa.com Sat May 20 22:32 21 amp 725 "hello hello"

& 3

Message 3:

From hello@haa.com Sat May 20 22:32:21 2017

Return-Path: # name has changed #

X-Original-To: root@qq.com

Delivered-To: root@qq.com

Date: Sat, 20 May 2017 22:32:23-0400

To: root@qq.com

Subject: hello hello

User-Agent: Heirloom mailx 12.5 7-5-10

Content-Type: text/plain; charset=us-ascii

From: hello@haa.com

Status: R

Hello

&

Ten outbound address translation

1) do dns parsing first:

1 vim / etc/named.rfc1912.zones

Content:

Zone "haa.com" IN {

Type master

File "haa.com.zone"

Allow-update {none;}

}

2 cd / var/named/

3 cp-p qq.com.zone haa.com.zone

4 vim haa.com.zone

Content:

$TTL 1D

@ IN SOA dns.haa.com. Root.haa.com. (

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS dns.haa.com.

Dns A 172.25.254.112

Haa.com. MX 1 172.25.254.112.room# is the ip### of the real name host

~

5 systemctl restart named

The process is as follows:

[root@westos-mail westos] # vim / etc/named.rfc1912.zones

Zone "haa.com" IN {

Type master

File "haa.com.zone"

Allow-update {none;}

}

[root@westos-mail named] # cd / var/named/

[root@westos-mail named] # ls

Data named.ca named.localhost qq.com.zone westos.com.zone

Dynamic named.empty named.loopback slaves

[root@westos-mail named] # cp-p qq.com.zone haa.com.zone

[root@westos-mail named] # vim haa.com.zone

$TTL 1D

@ IN SOA dns.haa.com. Root.haa.com. (

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS dns.haa.com.

Dns A 172.25.254.112

Haa.com. MX 1 172.25.254.112.

~

[root@westos-mail named] # systemctl restart named

2) configuration

1 postconf-e "virtual_alias_maps = hash:/etc/postfix/virtual"

2 vim / etc/postfix/virtual

Content:

Hello@haa.com westos@westos.com

Alias real name

3 postmap / etc/postfix/virtual### encryption #

4 systemctl restart postfix.service

The process is as follows:

[root@westos-mail named] # postconf-d | grep virtual

Address_verify_virtual_transport = $virtual_transport

Propagate_unmatched_extensions = canonical, virtual

Proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps

Unknown_virtual_alias_reject_code = 5505

Unknown_virtual_mailbox_reject_code = 5505

Virtual_alias_domains = $virtual_alias_maps

Virtual_alias_expansion_limit = 1000

Virtual_alias_maps = $virtual_maps

Virtual_alias_recursion_limit = 1000

Virtual_delivery_slot_cost = $default_delivery_slot_cost

Virtual_delivery_slot_discount = $default_delivery_slot_discount

Virtual_delivery_slot_loan = $default_delivery_slot_loan

Virtual_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit

Virtual_destination_concurrency_limit = $default_destination_concurrency_limit

Virtual_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback

Virtual_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback

Virtual_destination_rate_delay = $default_destination_rate_delay

Virtual_destination_recipient_limit = $default_destination_recipient_limit

Virtual_extra_recipient_limit = $default_extra_recipient_limit

Virtual_gid_maps =

Virtual_initial_destination_concurrency = $initial_destination_concurrency

Virtual_mailbox_base =

Virtual_mailbox_domains = $virtual_mailbox_maps

Virtual_mailbox_limit = 51200000

Virtual_mailbox_lock = fcntl, dotlock

Virtual_mailbox_maps =

Virtual_minimum_delivery_slots = $default_minimum_delivery_slots

Virtual_minimum_uid = 100

Virtual_recipient_limit = $default_recipient_limit

Virtual_recipient_refill_delay = $default_recipient_refill_delay

Virtual_recipient_refill_limit = $default_recipient_refill_limit

Virtual_transport = virtual

Virtual_uid_maps =

[root@westos-mail named] # postconf-e "virtual_alias_maps = hash:/etc/postfix/virtual"

[root@westos-mail named] # vim / etc/postfix/virtual

Hello@haa.com westos@westos.com

Alias real name

[root@westos-mail named] # postmap / etc/postfix/virtual### encryption #

[root@westos-mail named] # systemctl restart postfix.service

Test:

Email sender:

1 mail hello@haa.com### email #

2 mailq

Email receiver:

Mail

The process is as follows:

[root@westos-mail named] # mail

Heirloom Mail version 12.5 7-5-10. Type? For help.

"/ var/spool/mail/westos": 1 message 1 new

N 1 root Sat May 20 22:42 21 amp 719 "hai"

& 1

Message 1:

From root@qq.com Sat May 20 22:42:59 2017

Return-Path:

X-Original-To: hello@haa.com

Delivered-To: westos@westos.com

Date: Sat, 20 May 2017 22:42:58-0400

To: hello@haa.com

Subject: hai

User-Agent: Heirloom mailx 12.5 7-5-10

Content-Type: text/plain; charset=us-ascii

From: root@qq.com (root)

Status: R

Hai

&

[root@qq-mail ~] # mail hello@haa.com### email #

Subject: hai

Hai

.

EOT

[root@qq-mail ~] # mailq

Mail queue is empty

[root@qq-mail ~] #

(2) dovecot configuration

One definition:

Dovecot is used to provide pickup protocols.

Protocol: Port:

Pop3110

Imap143

Imaps993

Pop3s995

Given the user name and password, the dovecot program takes us to see the user's mail file.

Second configuration

1 vim / etc/dovecot/dovecot.conf### who can access and pass authentication #

Content:

24 protocols = imap pop3 lmtp### Open pickup Protocol #

48 login_trusted_networks = 0.0.0.0 Universe # allow everyone to connect #

49 disable_plaintext_auth = no### supports plaintext #

2 what file vim / etc/dovecot/conf.d/10-mail.conf### takes the user to see #

Content:

30 mail_location = mbox:~/mail:INBOX=/var/mail/%u

3 mkdir / etc/skel/mail/.imap-paired directory # create a directory in the user skeleton file, then all newly created users have the directory #

4 touch / etc/skel/mail/.imap/INBOX

5 mkdir / home/westos/mail/.imap-paired directory # if it is a pre-existing user, create a separate directory, because the user's directory # is not found in the user skeleton file

6 touch / home/westos/mail/.imap/INBOX

The process is as follows:

[root@westos-mail ~] # yum install dovecot-y

[root@westos-mail ~] # systemctl start dovecot

[root@westos-mail ~] # netstat-anplte | grep dovecot

Tcp 0 0 0.0.0.0 5989/dovecot 993 0.0.0.0 5989/dovecot

Tcp 0 0 0.0.0.0 5989/dovecot 995 0.0.0.0 5989/dovecot

Tcp 0 0 0.0.0.0 5989/dovecot 110 0.0.0.0 5989/dovecot

Tcp 0 0 0.0.0 0 5989/dovecot 143 0.0.0 0 5989/dovecot

Tcp6 0 0: 993: * LISTEN 0 92794 5989/dovecot

Tcp6 0 0: 995: * LISTEN 0 92770 5989/dovecot

Tcp6 0 0: 110: * LISTEN 0 92768 5989/dovecot

Tcp6 0 0: 143: * LISTEN 0 92792 5989/dovecot

[root@westos-mail ~] # vim / etc/dovecot/dovecot.conf

[root@westos-mail ~] # vim / etc/dovecot/conf.d/10-mail.conf

[root@westos-mail ~] # systemctl restart dovecot.service

[root@westos-mail ~] # mkdir / etc/skel/mail/.imap-p

[root@westos-mail ~] # touch / etc/skel/mail/.imap/INBOX

[root@westos-mail ~] # passwd westos

Changing password for user westos.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

Passwd: all authentication tokens updated successfully.

[root@westos-mail ~] # mkdir / home/westos/mail/.imap-p

[root@westos-mail ~] # touch / home/westos/mail/.imap/INBOX

Test:

Mutt-f pop://westos@172.25.254.112

Three profix+mysql

1) preparatory work:

1 yum install httpd php php-mysql.x86_64 mariadb-server.x86_64-y

2 vim / etc/my.cnf

Content:

Skip-networking = 1

3 mysql_secure_installation # Database initialization #

4 cd / var/www/html/

5 tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2

6 mv phpMyAdmin-3.4.0-all-languages/ myadmin

7 cd myadmin/

8 cp config.sample.inc.php config.inc.php

9 vim config.inc.php

10 systemctl restart httpd

11 create user postuser@localhost identified by 'postuser'

12 create db, usermessage,dbuser

2) configuration

1 cd / etc/postfix/

2 vim mailuser.cf### user name query #

Content:

Hosts = host where the localhost### database resides #

User = postuser### user logging into the database #

Password = postuser### login password #

Dbname = name of the library to be queried by email###postfix #

Table = name of the table to be queried by emailuser###postfix #

Select_field = the field to be queried by username###postfix #

Where_field = query condition of postfix given by username### user #

3 query the domain name of cp mailuser.cf maildomain.cf### users #

4 vim maildomain.cf

Hosts = localhost

User = postuser

Password = postuser

Dbname = email

Table = emailuser

Select_field = domain

Where_field = domain

5 cp mailuser.cf mailbox.cf

6 vim mailbox.cf # user mailbox query #

Hosts = localhost

User = postuser

Password = postuser

Dbname = email

Table = emailuser

Select_field = maildir

Where_field = username

7 postmap-Q "lee@lee.com" mysql:/etc/postfix/mailuser.cf # check whether the user name will be output. If so, it means that the user name is written correctly.

8 postmap-Q "lee.com" mysql:/etc/postfix/maildomain.cf

9 postmap-Q "lee@lee.com" mysql:/etc/postfix/mailbox.cf

3) postfix configuration

1 groupadd-g 666 vmail

2 useradd-s / sbin/nologin-u 666 vmail-g 666

3 postconf-d | grep virtual

4 postconf-e "virtual_mailbox_base = / home/vmail" # set the mail directory of the virtual user #

5 postconf-e "virtual_uid_maps = static:666" # uid### of files created by virtual users

6 postconf-e "virtual_gid_maps = static:666" # gid### of the virtual user's creation file

7 postconf-e "virtual_alias_maps = mysql:/etc/postfix/mailuser.cf"

8 postconf-e "virtual_mailbox_maps = mysql:/etc/postfix/mailbox.cf"

9 postconf-e "virtual_mailbox_maps = mysql:/etc/postfix/maildomain.cf"

Whether the test is written correctly: if it exists, it means it is written correctly.

Ll / etc/postfix/mailuser.cf

Ll / etc/postfix/mailbox.cf

Ll / etc/postfix/maildomain.cf

Test:

Mail lee@lee.com### to see if you can use the user in the database to send email #

The process is as follows:

[root@westos-mail myadmin] # cd / etc/postfix/

[root@westos-mail postfix] # vim mailuser.cf

Hosts = localhost

User = postuser

Password = postuser

Dbname = email

Table = emailuser

Select_field = username

Where_field = username

[root@westos-mail postfix] # postmap-Q "lee@lee.com" mysql:mailuser.cf

Postmap: fatal: bad string length 0 < 1: mailuser.cf_dbname =

[root@westos-mail postfix] # postmap-Q "lee@lee.com" mysql:/etc/postfix/mailuser.cf

[root@westos-mail postfix] # postmap-Q "lee@lee.com" mysql:/etc/postfix/mailuser.cf

[root@westos-mail postfix] # vim mailuser.cf

[root@westos-mail postfix] # postmap-Q "lee@lee.com" mysql:/etc/postfix/mailuser.cf

Lee@lee.com

[root@westos-mail postfix] # cp mailuser.cf maildomain.cf

[root@westos-mail postfix] # vim maildomain.cf

Hosts = localhost

User = postuser

Password = postuser

Dbname = email

Table = emailuser

Select_field = domain

Where_field = domain

~

[root@westos-mail postfix] # postmap-Q "lee.com" mysql:/etc/postfix/maildomain.cf

Lee.com,lee.com

[root@westos-mail postfix] # cp mailuser.cf mailbox.cf

[root@westos-mail postfix] # vim mailbox.cf

Hosts = localhost

User = postuser

Password = postuser

Dbname = email

Table = emailuser

Select_field = maildir

Where_field = username

[root@westos-mail postfix] # postmap-Q "lee@lee.com" mysql:/etc/postfix/mailbox.cf

Postmap: warning: mysql query failed: Unknown column 'madir' in' field list'

Postmap: fatal: table mysql:/etc/postfix/mailbox.cf: query error: Success

[root@westos-mail postfix] # vim mailbox.cf

[root@westos-mail postfix] # postmap-Q "lee@lee.com" mysql:/etc/postfix/mailbox.cf

/ mnt/lee.com/lee

[root@westos-mail postfix] #

[root@westos-mail] # groupadd-g 666 vmail

[root@westos-mail] # useradd-s / sbin/nologin-u 666 vmail-g 666

[root@westos-mail ~] # id vmail

Uid=666 (vmail) gid=666 (vmail) groups=666 (vmail)

[root@westos-mail ~] # postconf-d | grep virtual

Address_verify_virtual_transport = $virtual_transport

Propagate_unmatched_extensions = canonical, virtual

Proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps

Unknown_virtual_alias_reject_code = 5505

Unknown_virtual_mailbox_reject_code = 5505

Virtual_alias_domains = $virtual_alias_maps

Virtual_alias_expansion_limit = 1000

Virtual_alias_maps = $virtual_maps

Virtual_alias_recursion_limit = 1000

Virtual_delivery_slot_cost = $default_delivery_slot_cost

Virtual_delivery_slot_discount = $default_delivery_slot_discount

Virtual_delivery_slot_loan = $default_delivery_slot_loan

Virtual_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit

Virtual_destination_concurrency_limit = $default_destination_concurrency_limit

Virtual_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback

Virtual_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback

Virtual_destination_rate_delay = $default_destination_rate_delay

Virtual_destination_recipient_limit = $default_destination_recipient_limit

Virtual_extra_recipient_limit = $default_extra_recipient_limit

Virtual_gid_maps =

Virtual_initial_destination_concurrency = $initial_destination_concurrency

Virtual_mailbox_base =

Virtual_mailbox_domains = $virtual_mailbox_maps

Virtual_mailbox_limit = 51200000

Virtual_mailbox_lock = fcntl, dotlock

Virtual_mailbox_maps =

Virtual_minimum_delivery_slots = $default_minimum_delivery_slots

Virtual_minimum_uid = 100

Virtual_recipient_limit = $default_recipient_limit

Virtual_recipient_refill_delay = $default_recipient_refill_delay

Virtual_recipient_refill_limit = $default_recipient_refill_limit

Virtual_transport = virtual

Virtual_uid_maps =

[root@westos-mail ~] # postconf-e "virtual_mailbox_base = / home/vmail"

[root@westos-mail ~] # postconf-e "virtual_uid_maps = static:666"

[root@westos-mail ~] # postconf-e "virtual_gid_maps = static:666"

[root@westos-mail ~] # postconf-e "virtual_alias_maps = mysql:/etc/postfix/mailuser.cf"

[root@westos-mail ~] # postconf-e "virtual_mailbox_maps = mysql:/etc/postfi/maildomain.cf

[root@westos-mail ~] # postconf-e "virtual_mailbox_maps = mysql:/etc/postfix/mailbox.cf"

[root@westos-mail ~] # ll / etc/postfix/mailuser.cf

-rw-r--r--. 1 root root 134 May 21 04:06 / etc/postfix/mailuser.cf

[root@westos-mail ~] # ll / etc/postfix/mailbox.cf

-rw-r--r--. 1 root root 133 May 21 04:21 / etc/postfix/mailbox.cf

[root@westos-mail ~] # ll / etc/postfix/maildomain.cf

-rw-r--r--. 1 root root 130 May 21 04:19 / etc/postfix/maildomain.cf

[root@westos-mail ~] # cd / home/vmail/

[root@westos-mail vmail] # ls

Mail

[root@westos-mail vmail] # mail lee@lee.com

Subject: hello

Hello hello

.

EOT

[root@westos-mail vmail] # mailq

Mail queue is empty

[root@westos-mail vmail] # ls

Lee.com mail

[root@westos-mail vmail] # cd lee.com/

[root@westos-mail lee.com] # ls

Lee

[root@westos-mail lee.com] # cd lee/

[root@westos-mail lee] # ls

Cur new tmp

[root@westos-mail lee] # cd new/

[root@westos-mail new] # cat new/

Cat: new/: No such file or directory

[root@westos-mail new] # cd ne

-bash: cd: ne: No such file or directory

[root@westos-mail new] # cd new/

-bash: cd: new/: No such file or directory

[root@westos-mail new] #

[root@westos-mail new] # ls

1495357341.Vfd01I30059aaM65037.westos-mail.westos.com

[root@westos-mail new] # cat 1495357341.Vfd01I30059aaM65037.westos-mail.westos.com

Return-Path:

X-Original-To: lee@lee.com

Delivered-To: lee@lee.com

Received: by westos-mail.westos.com (Postfix, from userid 0)

Id DF62F273AC2; Sun, 21 May 2017 05:02:20-0400 (EDT)

Date: Sun, 21 May 2017 05:02:20-0400

To: lee@lee.com

Subject: hello

User-Agent: Heirloom mailx 12.5 7-5-10

MIME-Version: 1.0

Content-Type: text/plain; charset=us-ascii

Content-Transfer-Encoding: 7bit

Message-Id:

From: root@westos.com (root)

Hello hello

Tags: Mail user content host file test procedure configuration encryption name character network directory port query alias address interface e-mail Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno macOS OPPO Reno Huawei Docker Linux