ContactAddress

Design

This system was designed to be as simple as possible:
It was designed in a way that enables it to receive mail but it does not to need to send any mail: If we want to send mail we would need to implement all that:

We could also whitelist the servers used by the people receiving this mail through this system, through SPF, if we want people to send mail to the same address they received it from (which is probably not very important).

The DNS zones are configured to set the MX to the Replicant vm at the FSF.
For more details on how the DNS is hosted, see DNS.

For now this uses OpenSMTPD just because the person implementing that system initially (GNUtoo) already used OpenSMTPD at home, so it was faster as the configurations could be partially reused and the setup compared.

For consulting the mail we will use dovecot as the person willing to implement it (GNUtoo) already uses that at home too.

This will still need some authentication but as it's a separate part it also limit the risk of missconfiguration as for the ability to abuse the system to send mails.

Maintenance

Adding new people

HOWTO

First start by making sure that you have all the required information: To enable the person to receive mail you will need to:

Then to enable the person to retrieve the mail that are being received, you need to edit the /etc/dovecot/conf.d/secrets/server.passwd file and add a line that uses this format:

<user>:<password_hash>:<uid>:<gid>::<home>::userdb_mail=maildir:<Maildir_path>

Example

Let's take a potentially fictional person named Yoko Tsuno that started contributing a lot to Replicant and that for some reasons needs to receive mails from the Replicant contact address (for instance for applying to some NLnet grants).

First we make sure that the person agrees to be listed on the Infrastructure wiki page as explained before.

Then the person comes up with a lowercase useranme (yokotsuno) and give us the following information

We start by enabling Yoko Tsuno to receive mail:

# useradd -m yokotsuno
# vim /etc/smtpd/aliases

If we had something like that in /etc/smtpd/aliases

contact: gnutoo, putti

Then we make it become something like that:

contact: gnutoo, putti, yototsuno

Then we update the table alias

# smtpctl update table aliases

Then we enable Yoko Tsuno to actually retrieve the mail:

# gpasswd add yokotsuno mail
# id yokotsuno
uid=1010(yokotsuno) gid=1010(yokotsuno) groups=8(mail),1010(yokotsuno)
# vim /etc/dovecot/conf.d/secrets/server.passwd

And add the following line:

yokotsuno:{SHA512-CRYPT}$6$v.YlRHeVQpNmheHv$yaqUhQ5xnyFzV2SNbfdYWmeQT3Gg4fZ/7AC.rixBHpUaqT9XsXSU2CSQKLyyghHovDo.p1hnveki4DnoE1GJL/:1010:1010::/home/yokotsuno::userdb_mail=maildir:/home/yokotsuno/Maildir

Then Yoko Tsuno needs to setup a mail client to retrieve the mail with the following details:

Username: yokotsuno
Password: The secret password that was used to generate the password hash.
Hostname: imap.replicant.us
Port: 143
Protocol: TLSv1.3, imaps

Notes

Switching to more recent OpenSMTPD

The configuration format changed in newer OpenSMTPD.

We will probably have to migrate the configuration when switching to to Trisquel 9.

TODO: Document the format change.