Mail server setup
Updated 7 March 2019
Introduction
A mail server is a server that processes email messages, which includes receiving and sending, as well as sending mail. All incoming mail does not go directly to the user's computer (otherwise it would have been necessary to keep it constantly on), but is stored on the mail server, which operates around the clock, so that the user can pick up their mail at any time.
To setup a mail server, you can use Calculate utilities included in the sys-apps/calculate-server package. User and group accounts are stored on the OpenLDAP server, Postfix is the mail agent, and Dovecot+ takes over the function of an IMAP/POP3 server. All necessary software is included in [Calculate Directory Server] (cds).
LDAP configuration
First setup a LDAP server. Make all necessary setup procedures according to the manual.
Mail server configuration
Before configuring the mail server, setup the account storage for Unix users. To do so, run:
* WARNING: Running this program will modify the configuration files and the LDAP database. If you want to continue, enter 'yes', else enter 'no': yes
* Added ldif file ...
[ok]
* Unix service configured ...
[ok]
To setup a mail server with default parameters, run:
* WARNING: Running this program will modify the configuration files and the LDAP database. If you want to continue, enter 'yes', else enter 'no': yes
* Removed Mail DN from LDAP database ...
[ok]
* Added ldif file ...
[ok]
* Starting Postfix ...
[ok]
* Starting Dovecot ...
[ok]
* Mail service configured ...
[ok]
To select host mail.example.org and use IMAP and POP3 protocols, run the following:
cl-setup --type pop3,imap --host mail.example.org mail
To view all available parameters, run:
calculate-server 2.1.18 Usage: cl-setup [options] service Sets service in the system Examples: cl-setup samba # set Samba service in the system. Common options: -h, --help display this help and exit --help-all display help for all services options --help-jabber display help for Jabber service options --help-ldap display help for LDAP service options --help-mail display help for Mail service options --help-samba display help for Samba service options --help-proxy display help for Proxy service options --help-dns display help for DNS service options --help-dhcp display help for DHCP service options Mail service options: -a, --allow enter the allowed ip addresses and network --host HOST mail host, default - hostname -t, --type TYPE mail type - 'imap', 'pop3', 'pop3,imap' (default - imap) -c, --crypt CRYPT encryption type - 'none', 'tls' (default - tls) --history CONDITION enabled or disabled mail history logging, default disable. (on/off) --history-domains DOMAIN domain or domains for own mail (comma delimited) --history-path PATH history path Services: ldap ldap service unix unix service samba samba service mail mail service jabber jabber service ftp ftp service proxy proxy service dns dns service dhcp dhcp service
Once cl-setup
operation completed, the mail service will be configured and running. Use the netstat
tool to check the open ports:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN tcp6 0 0 :::110 :::* LISTEN tcp6 0 0 :::143 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 :::25 :::* LISTEN tcp6 0 0 :::636 :::* LISTEN tcp6 0 0 :::993 :::* LISTEN tcp6 0 0 :::995 :::* LISTEN tcp6 0 0 :::389 :::* LISTEN
Protocols POP3 и IMAP use ports 110 и 143 respectively.
To avoid spam brought to system users (described in /etc/mail/aliases), the nobody mail directory is not created by default. If you need to get messages for system users, create a directory with the necessary access privileges:
mkdir /var/calculate/server-data/mail/nobody
chown nobody:nobody /var/calculate/server-data/mail/nobody
chmod 0700 /var/calculate/server-data/mail/nobody
Now all messages for system users will be stored in /var/calculate/server-data/mail/nobody.
Managing accounts
An account is a record that contains information necessary for user identification when connecting to the system, authenticating and logging. In our case, it will be used for connecting to a mail service or a mailbox.
A mailbox is a logical disk partition used for mail storage, referred to as an mail address. Several addresses can correspond to a mailbox, called synonyms or aliases or else nicknames.
To add user guest with mail nickname guestmail@mail.example.org, run:
New password: Repeat new password: * User added to Unix service * User added to Mail service
To modify the guest user password, run:
New password: Repeat new password: * Password of Mail service user changed
To remove user guest from the mail service, run:
* Created /var/calculate/server-backup/deleted/guest-1000/mail for storing remote user data * User mail directory /var/calculate/server-data/mail/guest deleted * User guest of Mail service deleted
Managing mail groups
A mail group is a set of mail addresses used to send mail to several recipients. An mail sent to the group address is distributed to all mail accounts in the group.
To add a mailing group guestgroup with an alternative mailing address gg@example.org, run:
* Group 'guestgroup' added to Mail service
To remove guestgroup, run:
* Group guestgroup of Mail service was removed
To add and remove accounts, the cl-usermod
and cl-groupmod
commands are used.
For instance, to add user guest to groups guesttest and guestgroup, run:
* User added to groups
To move user guest to the guesttest group, run:
* List of additional groups replaced
To add users guest1 and guest2 to group guesttest, run:
* Users added to group guesttest
To remove users guest1 and guest2 from group guesttest, run:
* Users removed from group guesttest
Server checkup
To check if mail has been sent to ~~guestmail@mail.example.org, run:
CONNECTED(00000003) ... --- 250 DSN ehlo mail 250-mail.example.org 250-PIPELINING 250-SIZE 100000000 250-ETRN 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:<guest@mail.example.org> 250 2.1.0 Ok rcpt to:<guestmail@mail.example.org> 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> From:<guest@mail.example.org> To:<guestmail@mail.example.org> Subject: Test Test . 250 2.0.0 Ok: queued as 15A9D1D4A2 quit 221 2.0.0 Bye closed
To check the receipt of mail via IMAP for user guest with password secret , follow these steps:
CONNECTED(00000003) ... --- . OK Pre-login capabilities listed, post-login capabilities have more. A1 LOGIN guest secret * CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ NOTIFY SPECIAL-USE A1 OK Logged in A2 SELECT Inbox * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. * 1 EXISTS * 0 RECENT * OK [UIDVALIDITY 1542618255] UIDs valid * OK [UIDNEXT 2] Predicted next UID A2 OK [READ-WRITE] Select completed (0.002 + 0.000 + 0.001 secs). A3 FETCH 1 BODY[HEADER] * 1 FETCH (BODY[HEADER] {598} Return-Path: <noname@mail.example.org> X-Original-To: guestmail@mail.example.org Delivered-To: guest@mail.example.org Received: from mail (mail.example.org [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.example.org (Postfix) with ESMTPS id 15A9D1D4A2 for <guestmail@mail.example.org>; Mon, 19 Nov 2018 11:58:27 +0300 (MSK) From:<guest@mail.example.org> To:<guestmail@mail.example.org> Subject: Test Message-Id: <20181119085920.15A9D1D4A2@mail.example.org> Date: Mon, 19 Nov 2018 11:58:27 +0300 (MSK) ) A3 OK Fetch completed (0.001 + 0.000 secs). A4 LOGOUT * BYE Logging out A4 OK Logout completed (0.001 + 0.000 secs). closed
To check the receipt of mail via POP3 for user guest with password secret , follow these steps:
CONNECTED(00000003) ... --- +OK Dovecot ready. user guest +OK pass secret +OK Logged in. list +OK 1 messages: 1 604 . retr 1 +OK 604 octets Return-Path: <noname@mail.example.org> X-Original-To: guestmail@mail.example.org Delivered-To: guest@mail.example.org Received: from mail (mail.example.org [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.example.org (Postfix) with ESMTPS id 15A9D1D4A2 for <guestmail@mail.example.org>; Mon, 19 Nov 2018 11:58:27 +0300 (MSK) From:<guest@mail.example.org> To:<guestmail@mail.example.org> Subject: Test Message-Id: <20181119085920.15A9D1D4A2@mail.example.org> Date: Mon, 19 Nov 2018 11:58:27 +0300 (MSK) Test . quit +OK Logging out. closed