A cli that send email directly to the mx servers of the world
go get github.com/modfin/brev/cmd/brev
go get github.com/modfin/brev/cmd/brevd
The Brevd is server for transactional emails via http api.
- Choose a host domain you are going to use for the brevd server, eg.
brev.cc
- Choose a client domain from which to send emails, eg.
example.com
- Find out what ip you are running the service on, eg
1.2.3.4
- Generate a dkim key-pair, eg
brev gen-dkim-keys --key-size=2048
. This generates two files.dkim-private.pem
is loaded intobrevd
anddkim-pub.dns.txt
which is put into aTXT
record on the client domain
Add a A
record for your server, eg mx0.brev.cc
pointing to the ip, 1.2.3.4
Should result in the following
dig A mx0.brev.cc
;; ANSWER SECTION:
mx0.brev.cc. 260 IN A 1.2.3.4
Add a MX
record for your server to for your domain, eg brev.cc
pointing to the brevd server
Should result in the following
dig MX brev.cc
;; ANSWER SECTION:
brev.cc. 300 IN MX 10 mx0.brev.cc.
Add a SPF policy through TXT
record for your domain,
eg brev.cc
pointing to you brevd server, eg v=spf1 mx -all
Should result in the following
dig TXT brev.cc
brev.cc. 300 IN TXT "v=spf1 mx -all"
Finally, set up PTR records through your ISP, eg 1.2.3.4 -> mx0.brev.cc
Say you now want send your emails and have them come from no-reply@example.com
Add a SPF policy to example.com
through TXT
record pointing to the
brev.cc
domain, eg v=spf1 include:brev.cc -all
Should result in the following
dig TXT example.com
;; ANSWER SECTION:
example.com. 60 IN TXT "v=spf1 include:brev.cc -all"
Add a DKIM public key to example.com
by choosing a selector, eg brev
and adding the
public key to TXT
record at brev._domainkey.example.com
Should result in the following
dig TXT brev._domainkey.example.com
;; ANSWER SECTION:
brev._domainkey.example.com. 300 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A....;"
Create a run script that configures the environment for you
cat ./run-brevd.sh
export BREV_HOSTNAME=mx0.brev.cc
export BREV_DB_URI=$(pwd)/brev.sqlite
export BREV_MX_DOMAIN=brev.cc
export BREV_MX_PORT=25
export BREV_DKIM_SELECTOR=brev
export BREV_DKIM_PRIVATE_KEY=./path/to/dkim-private.pem
brevd
The Brev cli is a small utility to send emails directly to a MX server
NAME:
brev - a cli that send email directly to the mx servers
USAGE:
brev [global options] command [command options] [arguments...]
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--subject value Set subject line
--from value Set from email
--message-id value set the message id
--to value Set to email
--cc value Set cc email
--bcc value Set cc email
--text value text content of the mail
--html value html content of the mail
--attach value path to file attachment
--help, -h show help (default: false)
brev --subject="An attachment" \
--to="someone@example.com" \
--cc="someone-else@example.com" \
--cc="someone-compleatly-different@example.com" \
--attach="/path/to/a.file" \
--text='The body of the email'