Chapter 25th: Using E-mailLinuxE-mail in Linux, the E-mail process is generally divided into three functions: MailTransferAgent (MTA) mailDeliveryAgent (MDA (
Chapter 2: Use e-mail
Linux E-mail Basics
E-mail in Linux
In Linux, the E-mail process is generally divided into three functions:
Mail Transfer Agent (MTA)
Mail Delivery proxy (Mail Delivery Agent, MDA)
Mail User Agent (MUA)
Some E-mail software combines MDA and MTA, and some combine MDA and MUA
Email sending proxy
MTA is responsible for sending and receiving emails in the system
For each sent message, the MTA must determine the recipient address.
If the destination is a local system, MTA will send it directly to the local mailbox or send the message to the local MDA for delivery
If the destination host is a remote email server, the MTA must establish a communication connection with the MTA on the remote host for transmission.
MTA usually uses two methods to deliver mail to a remote host:
Direct delivery)
Proxy delivery)
If the Linux system is directly connected to the Internet, it can directly deliver messages sent to remote host recipients to the remote host,
MTA uses the Domain Name System (DNS) to resolve the IP address, and then uses the Simple Mail Transfer Protocol (SMTP) to establish a network connection.
If Linux is not directly connected to the Internet or does not want to communicate directly with other remote hosts, it usually uses a front-end host (smart host ).
The front-end host is a proxy server that receives mail messages from the Linux system and then tries to deliver them directly to the target recipient.
Rogue servers can send spam by sending Unsolicited illegal cial Email (UCE) messages through front-end hosts. They can also hide their identities. "Now" most front-end hosts require some form of authentication before forwarding messages to other hosts.
For received emails, the MTA must be able to accept connection requests from the remote mail server and receive messages sent to local users. The most common protocol in this process is SMTP.
Mail delivery agent
MDA only focuses on delivering emails to local users
There are three common types of user mailboxes in Linux:
/Var/spool/mail or/var/mail file
$ HOME/mail file
Maildir-style email directory
Maildir is a relatively new feature, which is supported by some advanced MTA, MDA, and MUA applications. A mailbox is a directory in which each message is a separate file instead of each message as part of the mailbox file.
Almost all MDA and MUA can use the/var/spool/mail email file.
Email User proxy
MUA does not receive messages and only displays messages already in the mailbox.
Many MUA can send emails (either by using the SMTP front-end host function or automatically delivering messages to the local MTA)
Some popular MUA programs:
Mailx
Mailx can only read messages in/var/mail or $ HOME/mail format.
Mailx can also send emails.
$ Mail su1216Cc: Subject: testthis is a test. $ mail "/var/mail/su1216": 1 message 1 new> N 1 su1216 March 16: 15/640 test? Return-path:
Envelope-to: su1216 @ su1216-OptiPlex-380Delivery-date: Wed, 20 Nov 2013 16:24:32 + 0800 encoded Ed: from su1216 by su1216-OptiPlex-380 with local (Exim 4.71) (envelope-from
) Id 1Vj35L-0005Bj-WFfor su1216 @ su1216-OptiPlex-380; Wed, 20 Nov 2013 16:24:32 + 0800 Date: Wed, 20 Nov 2013 16:24:32 + 0800Message-Id:
To:
Subject: testX-Mailer: mail (GNU Mailutils 2.1) From: su1216
This is a test.
After completing the email, use ctrl + d to end the email.
Mutt(Using the ncurses library)
Graphical E-mail client
In the KDE window environmentKMail
In the GNOME window environmentEvolution
The above two are of little use in shell script programming.
Create a server
Sendemail
Sendemail usually runs in background mode. it listens to SMTP connections from the remote mail server and forwards emails from local users.
Sendemail configuration file
File |
Description |
Sendemail. cf |
Text files that control sendemail program behavior |
Sendemail. cw |
Text file containing the domain name list used by the sendemail program to receive messages |
Sendemail. ct |
Text files containing a list of trusted users that can control sendemail running |
Aliases |
Contains a list of valid local email addresses that can redirect emails to another user, file, or program. |
Newaliases |
Execute programs for creating new aliases database files from text files |
Mailq |
Executable program for checking the mail queue and printing any messages |
Mqueue |
Directory used to store messages to be delivered |
Mailertable |
Text file used to specify the route path of a specific domain |
Domaintable |
Text file used to map the old domain name to the new domain name |
Virtustable |
Text files used to map users and domains to alternate addresses |
Relay-domains |
Used to list text files of a specific host that can forward messages through the sendemail program |
Access |
Lists text files of specific domains. messages from these domains are allowed or disabled. |
Sendemail. cf file
This configuration file tells sendemail how to process the target email address to determine how to forward these messages and where to forward them.
The default file location is/etc/mail/sendemail. cf.
Sendemail. cf is composed of rule groups.
The rule can contain helper programs defined in the configuration file:
Class: defines some common phrases to help organize messages of a specific type.
Macro: set some values to simplify the input of long strings in the configuration file.
Option: set parameters to control sendemal program running.
The configuration file consists of a series of classes, macros, options, and rule groups. Each function is defined in the configuration file in the form of a single text line.
Each line in the configuration file starts with a single letter that defines the command for this line. A line starting with a space or a tab character is a continuation of the previous command line. The line starting with the pound sign is a comment
Sendemail configuration file command
Configuration command |
Description |
C |
Define text classes |
D |
Definition macro |
F |
Define a file containing text classes |
H |
Define header fields and commands |
K |
Define a database containing the text to be searched |
M |
Define email sending proxy |
O |
Define sendmail options |
P |
Defines the priority of sendmail. |
R |
Rule groups that define resolution addresses |
S |
Define the set of rule groups |
Postfix
Developed by Wietse Venema, Postfix provides a backup MTA for Unix-type servers
Postfix uses a main program that is always running as a background process. The main program uses other help programs that will be started as needed based on their functions.
Postfix help program
Program |
Description |
Bounce |
Send a log to the returned message queue and send the returned message back to the sender. |
Cleanup |
Process the received mail header and put the message in the receiving queue |
Error |
Process message delivery requests from qmgr and force message return |
Flush |
Process messages waiting for extraction by the remote email server |
Local |
Messages delivered to local users |
Pickup |
Wait for messages in the maildrop queue and send them to the cleaner to start processing. |
Pipe |
Forward messages from the queue manager program to an external program |
Postdrop |
When a common user has no write permission for this queue, the received message is moved to the maildrop queue. |
Qmgr |
Processes messages in the receiving queue, determines where and when they should be delivered, and starts the program during delivery |
Sendmail |
Provides a sendmail-compatible interface for the program to send messages to the maildrop queue. |
Showq |
Report the status of the Postfix Message Queue |
Smtp |
Use SMTP protocol to forward messages to external mail hosts |
Smtpd |
Use SMTP to receive messages from external email hosts |
Trival-rewrite |
Receive messages from the cleanup program. ensure that the header address of the qmgr program complies with the standard format and is used by the qmgr program to parse the remote host address. |
When processing messages, Postfix uses different message queues to manage E-mail messages. Each message queue contains messages in different message states in the Postfix system.
Postfix Message Queue
Queue |
Description |
Maildrop |
Receive new messages from local users to be processed |
Incoming |
Receives New messages to be processed from the remote host and processed messages from local users. |
Active |
Prepare the message delivered by Postfix |
Deferred |
The first delivery failed, waiting for the second delivery of the message |
Flush |
The message sent to the remote host. the remote host connects to the email server to obtain the message. |
Mail |
Saved delivered messages for local users to read |
If the Postfix system is disabled at any time, messages are still stored in the queue where they were last placed. After the Postfix is restarted, it automatically starts to process messages from these queues.
Postfix configuration file
Postfix uses three independent configuration files to allow you to set parameters used to guide Postfix in message processing. Unlike some MTA, it can modify the configuration information when the Postfix is running, and then run a command to load the new configuration for the Postfix without stopping the email server completely.
These three files are usually located at/etc/postfix
Postfix configuration file
File |
Description |
Install. cf |
Contains the installation parameter information used to install Postfix |
Main. cf |
Parameters used by the Postfix program to process messages |
Master. cf |
Parameters used by the Postfix main program to run the core program |
In the configuration file, each Postfix parameter and its value are in a separate row. the format is as follows:
Parameter = value
If you need to specify a front-end host, you can use the relayhost parameter, for example:
Relayhost = myisp.com
You can also specify an IP address here, but it must be enclosed in square brackets.
Use Mailx to send messages
The command format for sending messages by the Mailx program is:
Mail [-eIinv] [-a header] [-baddr] [-c addr] [-s subj] to-addr
Mailx command line parameters
Parameters |
Description |
- |
Specify the rows in the additional SMTP header |
-B |
Add a BCC recipient to the message. |
-C |
Add a CC recipient to the message |
-E |
Do not send messages if the message is empty. |
-I |
Ignore TTY interrupt signal |
-I |
Force Mailx to run in interactive mode |
-N |
Do not read the start file of/etc/mail. rc |
-S |
Specify a title line |
-V |
Display delivery details on the terminal |
The following is an example of sending an email. of course, we can also save the body to the text:
$ MailNo mail for su1216 $ echo "test" | mail-s "Test message" su1216 $ mail "/var/mail/su1216 ": 1 message 1 new> N 1 su1216 4 May 16: 15/637 Test message? Return-path:
Envelope-to: su1216 @ su1216-OptiPlex-380Delivery-date: Thu, 05 Dec 2013 16:47:06 + 0800 encoded Ed: from su1216 by su1216-OptiPlex-380 with local (Exim 4.71) (envelope-from
) Id 1VoUaQ-0005tl-Dlfor su1216 @ su1216-OptiPlex-380; Thu, 05 Dec 2013 16:47:06 + 0800 Date: Thu, 05 Dec 2013 16:47:06 + 0800Message-Id:
Subject: Test messageTo:
X-Mailer: mail (GNU Mailutils 2.1) From: su1216
Test?
Mutt program
Developed by Michael Elkins in 1995
Mutt can send a file as an attachment in an E-mail message. Mailx can only be sent as the body.
Mutt command line
Mutt command line parameters
Parameters |
Description |
-A alias |
Pass the expanded version of the specified alias to STDOUT. |
-A file |
Attaches a specified file to a message using the MIME protocol. |
-B address |
Specify a BCC (Blind Carbon Copy, secretly cc) recipient |
-C address |
Specify a CC (Carbon Copy, CC) recipient |
-D |
Print all configuration option values to STDOUT |
-E command |
Specifies the configuration command to run after processing the initialization file |
-F mailbox |
Email file to be loaded |
-F muttrc |
Specify the initialization file to be read, instead of $ HOME/. muttrc |
-H |
Show help text |
-H draft |
Specify a draft file containing the title and body to send messages. |
-I include |
Specify a file to be included in the message body. |
-M type |
Specify the Default mailbox type |
-N |
Ignore system configuration files |
-P |
Restore an expired message |
-Q query |
Queries a configuration variable value. The query will be executed after all the configuration files are parsed and any commands specified on the command line are executed. |
-R |
Open email in read-only mode |
-S subject |
Message title |
-V |
Display Mutt version number and compile-time definition |
-X |
Simulate Mailx editing mode |
-Y |
Started with the list of all mailboxes specified by the email command |
-Z |
When used together with-f, it is not started if there is no message in the mailbox |
-Z |
Open the first mailbox containing the new email specified by the email command |
Use Mutt
Basic command format:
Mutt-s Subject - File -- Recipients
The recipient list is separated by spaces.
The file must be an absolute path or a relative path of the current working directory based on the mutt command. You can add multiple files after-a to separate them with spaces.
echo "email content: test!" | mutt -s "A mail from su1216" -- su1216
Repost the following link
My blog address
Http://su1216.iteye.com/
Http://blog.csdn.net/su1216/