summaryrefslogtreecommitdiff
path: root/content/mail/smtp.md
blob: d5c1f484b758794a96bc7578724e92ff15cbb697 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
---
title: "Sending and Receiving Email"
tags: ["mail"]
date: 2022-12-01
---

The first step to setting up an email server is having an SMTP server.
SMTP sends and receives email. Whether we want a full email server or
just the ability to send automated email by script, we will need SMTP,
and Postfix is the standard SMTP server.

Here let\'s set a server up. Note that our goal is to be able to send
emails from our server. If you want a full email server, this is the
first step, and we will address the rest later.

## Before beginning!

Whatever VPS ([Vultr](https://www.vultr.com/?ref=8384069-6G) or
[Frantech](https://my.frantech.ca/aff.php?aff=3886)) or IPS you are
using, it is a very common policy to **automatically block all email
ports by default**. VPS providers do this to prevent spammers from using
their services.

If you want to start an email server, therefore, go to your VPS\'s site
and open a ticket or make a request to open up email ports, notably port `25`. This is a
simple process that requires nothing too special. One of the wagies at
your VPS will kindly do the needful and open your ports for you. Note
that this is not the same as unblocking a port with [ufw](/../ufw),
which still needs to be done for SMTP to work.

    ufw allow 25,587 proto tcp

## Installation

First, we install Postfix and also `mailutils`, which comes with some
mail programs we will use.

    apt install -y mailutils postfix

Installing Postfix for the first time will give us some graphical
options.

{{< img alt="SMTP Postfix internet site choice" src="/pix/smtp-01.png" link="/pix/smtp-01.png" >}}

When asked for a \"mail name\", give your full domain name from which
you would like mail to come and go, e.g. **example.org** or
**chad.thesiah.xyz**

{{< img alt="SMTP Postfix fully qualified domain name" src="/pix/smtp-02.png" link="/pix/smtp-02.png" >}}

## Test the email

That is actually all you need to have set up to have a barebones,
send-only email server. We can test our server by running a `mail`
command like that below.

    echo "Hi there.

    This is the text." | mail -s "Email from the server" your@emailaddress.com

This type of command is sufficient enough for your server to send mail.
Note that we use the `-s` option to specify the email\'s subject while
we pipe the email content into the `mail` command via standard input. In
this example I use a quoted multiline email as an example.

## Do you see your message?

If you sent the above test message to an account on Gmail or another
major email provider, there is **very high** chance of the message you
sent above being marked as spam or not appearing at all!

Don\'t worry, we\'ll take care of that in the next two articles where we
set up rDNS with your VPS provider and various other DNS
records to validate the emails you send.