NAV

Introduction

This is a living document. Please help us improving this documentation by forking and opening pull requests on Github Thanks!

While providing a brand-new way of configuring your email account, Developermail users battle-proven open-source products underneath to provide a stable service.

If you encounter any bugs or security issues, please contact us:

Getting started

Requirements

Sign up

Git username

user          # for user@developermail.io
subexamplecom # for admin@sub.example.com

IMAP/ SMTP/ CalDAV username

user@developermail.io
admin@sub.example.com

Use the full email address of your mailbox.

Open https://developermail.io/signup and create your first mailbox. You are able to create more mailboxes/ aliases later.

Make sure you note your password once your signup is complete! It won’t be displayed again. This password is used to authenticate yourself at the IMAP/ SMTP/ CalDAV services as well as for Git configuration.

Note: Username for IMAP/ SMTP/ CalDAV is different than the one for cloning the git repo.

We are starting by offering a 5 USD per mailbox per month plan. This plan includes 5GB of storage. Aliases for @developermail.io mailboxes are limited to three. Custom domains include unlimited free aliases.

Prices

Refer to our pricing page

Update DNS settings

DNS settings

MX    example.com "smtp.developermail.io."
TXT   example.com "developermail-verification=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
TXT   example.com "v=spf1 include:spf.developermail.io ~all"
CNAME 2015._domainkey.example.com "dkim.developermail.io"

If you registered your mailbox using the @developermail.io domain, you can skip this step.

When using a custom domain, you need to update your DNS settings in order to retrieve mails.

Configure your email client

IMAP Endpoint

imap.developermail.io  # Port 143/STARTTLS or 993/SSL

SMTP Endpoint

smtp.developermail.io  # Port 587/STARTTLS or 465/SSL

Developermail provides IMAP and SMTP endpoints for receiving/ sending emails. We only accept secure connections.

Use username@domain.tld as username and the password we generated for you upon signup!

Configure your calendar and address book

CalDAV and CardDAV Endpoint

Endpoint

https://dav.developermail.io/username@domain.tld

Developermail uses the CalDAV/ CardDAV protocol to sync calendars and address books. Use this URL for clients like

Endpoint for limited clients

# Default calendar
https://dav.developermail.io/username@domain.tld/calendar

# Address book
https://dav.developermail.io/username@domain.tld/addresses

If your client only supports a subset of the CalDAV protocol, you need to specify the full path to your calendar in your configuration. Use this URL for clients like

Use your full email address as username along your mailbox password.

Configuration

Setup your repository

Clone your private developermail configuration repository

$ git clone https://developermail.io/git/bob
Cloning into 'bob'...
Username for 'https://developermail.io': bob
Password for 'https://bob': *********

remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.

$ cd bob
$ tree
.
├── config.yaml
├── settings.yaml
└── sieve
    └── default.sieve

1 directory, 2 files

Clone your repository.

You are now ready to start configuring.

Configuring your Developermail mailboxes follows the regular git workflow. You make your changes to a file, commit them, and push them. As soon as they’re pushed (and there’s not error), the changes are live!

As your configuration is a fully-functional git repository, you can use all the awesome Git candy, such as revert, branch, blame and all the others!

Your first push

Add an alias to config.yaml

developermail.io:
  # Configuration section for bob@developermail.io
  bob:
    # Add a new alias here. bob.smith@developermail.io
    # will be aliases to bob@developermail.io.
    # You can then send and receive emails from both addresses
    # Note: Aliases are free of charge!
    aliases: [bob.smith]

Commit all your changes

git commit -am 'Add additional alias'

Push your changes to Developermail

$ git push
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 301 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote:
remote: Processing config.yaml in master branch:
remote:     Created alias bob.smith@developermail.io -> bob@developermail.io
remote:
remote:
remote: -------------------------------------------------------------------------
remote: You'll be billed $5.00 this month.
remote: If you have any questions, feel free to contact support!
remote:
To https://developermail.io/git/bob
   d336592..b33b7d7  master -> master

As an example, add an additional alias to your newly created mailbox.

Initial config.yaml

config.yaml (custom domain)

# We registered at Developermail using bob@example.com
example.com:
  bob:
    sieve: sieve/default.sieve
    aliases: []
    forwards: []

Your initial config.yaml will look like this.

config.yaml (developermail.io)

# We registered bob@developermail.io
developermail.io:
  bob:
    sieve: sieve/default.sieve
    aliases: []
    forwards: []

Or like this, if you chose to signup for a @developermail.io mailbox.

Aliases

Create and delete aliases

aliases:
  # Add alias1@domain.tld and alias2@domain.tld
  # as aliases for the mailbox
  - alias1
  - alias2

You are able to create and delete aliases by simply adding and removing them to/ from the aliases array.

Please note that there is a limit of 3 aliases per mailbox if you use our developermail.io domain. If you use a custom domain, there is no limitation of how many aliases you can use per mailbox.

Catchall aliases

catchall.me:
  # Setup a catchall for mailbox all@catchall.me
  # All email to any address @catchall.me will be
  # delivered to to "all@catchall.me" mailbox.
  # Furthermore adding "reply@catchall.me" alias,
  # so the "all@catchall.me" mailbox is able to reply
  # using "reply@catchall.me".
  all:
     aliases: ["@", "reply"]

Catchalls are also supported. Using a catchall address, all email going to *@example.com will end up in a certian mailbox (unless there’s another mailbox/ alias configured). If you plan to send emails from a mailbox with a catchall, make sure you additionally add them to the list.

Please note that catchalls only work for custom domains.

Cross-domain forwards

# Our primary domain with a catchall.
# Create an additional "office" alias so we can reply
# to emails using office@primary.com
primary.com:
  all:
    aliases: ["@", "office"]

# A secondary domain, forwarded to all@primary.com.
# The all@primary.com account can also reply with the
# all@secondary.com and webmaster@secondary.com addresses.
secondary.com:
  all:
    aliases: ["@", "webmaster"]
    forwards: [all@primary.com]

Catchalls and forwards work across multiple domains. In this example we’re using all@primary.com as our primary email address with a catchall. The secondary domain secondary.com also has a catchall and is forwarded to the primary address. When replying to emails, all@primary.com is allowed to also send emails from all@secondary.com and webmaster@secondary.com.

Address tags

Address tags

john+work@developermail.io -> john@developermail.io

Developermail fully supports email tags for all mailboxes. Tags can also be used to create single-use addresses, or to filter incoming emails. For example, if your email address is “john@developermail.io”, you may use “john+work@developermail.io” for your work emails. The emails will end up in John’s inbox, and can be filtered by sieve (see sieve section below). The tag can be chosen freely.

The address tag section on Wikipedia might also be informational.

Forwards

Create and delete forwards

forwards:
  - bob.smith@gmail.com
  - claudia.bechermehl@posteo.de

You are able to create and delete forwards by simply adding and removing them to/ from the forwards variable.

There are no limits on forwards neither for developermail.io nor for custom domains. Forwards are free of charge on custom domains.

Forward and keep emails in mailbox

If you want to forward emails, but also keep them in your developermail mailbox, configure forwarding using a sieve filter. See below for details. This also enables IMAP and SMTP access for the forwarded mailbox, allowing you to send emails. Please note that unlike forwards, forwards with the mailbox activated are charged as a normal mailbox.

Set mailbox password length

Set password length

company.com:
  admin:
    # Generate 35 character passwords
    # for mailbox admin@company.com
    password_length: 35

Developermail only uses secure, randomly generated passwords by default. It is, although, possible to define the length of the generated passwords in case you e.g. need higher entropy.

The password length needs to be between 10 and 50 characters.

Note: You need to re-generate the password once you set password_length in your configuration (and pushed it using git push). See the change password section for details.

Mailboxes

Create and delete mailboxes

developermail.io:
  fritz:
    sieve: sieve/default.sieve
    aliases: []
  hans:
    aliases:
      - hansi

You are able to create and delete mailboxes by simply adding and removing them to/ from the domain section.

Confirm deletion of a mailbox

curl https://developermail.io/api/mailboxes/mailbox@domain.tld/delete/TOKEN

Once you removed a mailbox from your config.yaml and pushed the changes, you’ll receive a URL including a delete token to confirm the deletion of your mailbox. This prevents you to accidently delete your mailbox e.g. due to a misconfiguration. If you visit the URL in your browser or curl it, the mailbox is permanently deleted.

Please note that your invoice will be automatically changed accordingly.

Change your mailbox password

curl -X POST -u fritz@developermail.io "https://developermail.io/api/mailboxes/change-password"

Change your mailbox password

Passwords are automatically generated by our system. If you want to update the mailbox password, you need to initiate a curl request. You will be asked for your old password. On success, a new password is generated for you.

Change password for another mailbox using the admin account

curl -X POST -u examplecom "https://developermail.io/api/mailboxes/change-password" --data '{"user": "fritz", "domain": "example.com"}'

You can also re-generate passwords for all mailboxes under your command, using the account login (the login you also use to access the git repository)

If you need more entropy (longer) passwords, you can set the required length using the password_length parameter in your config.yaml. See this section for details.

Domains

Create and delete domains

developermail.io:
  fritz:
    sieve: sieve/default.sieve
    aliases: []

custom-domain.com:
  frith:
    sieve: sieve/default.sieve
    aliases: []

You are able to create and delete domains by simply adding and removing them to/ from the global section.

There are not limits on domains. We won’t charge for domains neither.

Once you push your changes, you’ll receive all information required to adapt the domains DNS settings.

The domain will not be activated until you at least set the developermail-verification TXT record.

Sieve

Your initial default.sieve will look like this:

require "fileinto";
require "regex";
require "imap4flags";

# Place all spam mails in "Spam" folder
if allof (header :regex "X-DSPAM-Result" "^(Spam|Virus|Bl[ao]cklisted)$",
  not header :contains "X-DSPAM-Reclassified" "Innocent") {

  # Uncomment this if you want your spam mails to be automatically marked as read
  # setflag "\\Seen";

  fileinto "Spam";
  stop;
}

You can use Sieve for mail filterung rules that are applied directly on our servers.

Sieve Examples

File messages from certian addresses into folders

require ["fileinto"];

# Automatically put all emails from Facebook and Twitter in the Social folder
if anyof (address :contains "From" "twitter.com",
          address :contains "From" "@facebookmail.com") {

    fileinto :create "Social";
    stop;
}

Redirect only emails not marked as spam

require "fileinto";
require "regex";

# Place all spam mails in "Spam" folder
if allof (header :regex    "X-DSPAM-Result" "^(Spam|Virus|Bl[ao]cklisted)$",
      not header :contains "X-DSPAM-Reclassified" "Innocent") {

  fileinto "Spam";
  stop;
}

# Use sieve filter to redirect messages, so spam is not forwarded
# Match all emails (unless they're spam)
if header :contains "to" "" {
  redirect "first.redirect@domain.tld";
  redirect "second.redirect@otherdomain.tld";
}

Redirect mails, but also keep a copy in inbox

# Match all emails
if header :contains "to" "" {
  redirect "external@domain.tld";

  # Also keep a copy in inbox, but mark as seen
  setflag "\\Seen";
  keep;
}

Note: If you want to fileinto another folder, make sure to create it first! Alternatively, you can use fileinto :create "Foldername".

Automatic reply (vacation response)

require "vacation";

# Send out a vacation note once a day
vacation
  :days 1
  :subject "I'm out of office"
  :from "John Smith <john@developermail.io>"
"Thanks for contacting me. I'm out of office, though.";

Advanced automatic reply

require "vacation";
require "variables";

# Automatic responses can also reference the incoming message.
# In the following example, we're configuring the response to
# reference the subject of the incoming message:
if header :matches "Subject" "*" {
        set "subject" "${1}";
}

# Send out an automatic reply once a day
vacation
  :days 1
  :subject "Your message: ${subject}"
  :from "John Smith <john@developermail.io>"
"Thanks for contacting me. I'm out of office, though.";

Developermail has full sieve support. Refer to the RFCs for detailed information, or adapt one of our examples!

Also find more inspiration on the Dovecot Sieve documentation site!

Share your sieve configurations with other Developermail users (e.g. by sending a pull-request on this document on Github for additional karma!

Account

settings.yaml (default example)

# This is the configuration file for your account.
#
# By default, the password generated for your account is 10 characters
# long. If you want to increase the entropy of your password (and therefore
# its security), you can specify the length for generated passwords here.
# (Needs to be between 10 and 50 characters)
#
# Note: You need to request a new password, which then will be using the
# new entropy settings. You can request a new password for this account
# using the following command:
# See https://developermail.io/docs#change-your-account-password for details)
#
# curl -X POST -u <account_username> https://developermail.io/api/accounts/change-password
#
# account_password_length: 35

All settings regarding your account are configured in the YAML file settings.yaml. Analog to the mailbox configuration, you can edit the file with your favorite editor, commit and push the changes, and they’re live!

In case you do not have an settings.yaml file in your repository (it was introduced in Jul 2015), you can simply add it yourself. See example to the right.

Commit and push your new settings

git add settings.yaml
git commit -am 'Add settings.yaml'
git push

Add the file and commit/ push the changes to see them in action!

Change your account password

Your initial password is automatically generated upon registration. If you want to generate a new password, you can do so using a curl request. You will be asked for your old password. On success, a new password is generated for you.

Change account password

curl -X POST -u examplecom "https://developermail.io/api/accounts/change-password"

If you need more entropy (longer) passwords, you can set the required length using the account_password_length parameter in your settings.yaml. See this section for details.

Set account password length

Increase account password entropy

account_password_length: 35

Developermail, analog to mailboxes, only uses secure, randomly generated passwords by default. It is, although, possible to define the length of the generated passwords in case you e.g. need higher entropy. In case you need additional security for your account, you can increase the password entropy using the account_password_length field in the settings.yaml configuration file.

The password length needs to be between 10 and 50 characters.

Note: You need to re-generate the password once you set account_password_length in your configuration (and pushed it using git push). See the change password section for details.

Billing

Billing information displayed upon “git push”

$ git push
[...]
remote: You'll be billed $15.00 this month.
remote: If you have any questions, feel free to contact support
remote:
To https://developermail.io/git/bob
   52ab6e0..d336592  master -> master

Upon every push, you’ll receive a note of the amout you’ll be billed in the upcoming month. If there’s any issues, please feel free to send an email to our support:

Delete account

Please contact our support () if you want to delete your account. We’re currently working on the automated process for deleting accounts.