vmail

command module
v0.0.0-...-db93d88 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2019 License: BSD-2-Clause Imports: 20 Imported by: 0

README

vmail

vmail is a virtual mail server helper and rss to maildir feeder.

Prepare

# Requires a recent Debian based system
$ sudo apt-get install postfix dovecot-core dovecot-imapd dovecot-sqlite sqlite3

Install

Install and initialize vmail

$ go get github.com/mb0/vmail
$ sudo ln -s $GOPATH/bin/vmail /usr/bin

Setup the vmail user:

$ sudo bash
# useradd vmail
# mkdir /home/vmail
# chown vmail: /home/vmail
# chsh -s /bin/false vmail
# sudo -u vmail vmail setup

Setup postfix config files:

# vmail config postfix_domain  > /etc/postfix/vmail_mailbox_domains.cf
# vmail config postfix_mailbox > /etc/postfix/vmail_mailbox_maps.cf
# vmail config postfix_alias   > /etc/postfix/vmail_alias_maps.cf

Configure postfix:

# postconf -e 'home_mailbox = Maildir/'
# postconf -e 'virtual_mailbox_domains = sqlite:/etc/postfix/vmail_mailbox_domains.cf'
# postconf -e 'virtual_mailbox_maps = sqlite:/etc/postfix/vmail_mailbox_maps.cf'
# postconf -e 'virtual_alias_maps = sqlite:/etc/postfix/vmail_alias_maps.cf'
postconf -e 'virtual_uid_maps = static:the vmail uid'
postconf -e 'virtual_gid_maps = static:the vmail gid'
# postconf -e 'virtual_mailbox_base = /home/vmail'

Setup dovecot config files:

# vmail config dovecot_auth > /etc/dovecot/conf.d/auth-vmail.conf.ext
# vmail config dovecot_sql  > /etc/dovecot/vmail-sql.conf.ext

Configure dovecot:

# sed --in-place 's/^!include/#!include/' /etc/dovecot/conf.d/10-auth.conf
# echo '!include auth-vmail.conf.ext' >> /etc/dovecot/conf.d/10-auth.conf
# sed --in-place 's/^mail_location/#mail_location/' /etc/dovecot/conf.d/10-mail.conf

Configure sasl:

# vim /etc/dovecot/conf.d/10-master.conf
uncomment the 'Postfix smtp-auth' block and set mode to 0660 and user, group to postfix
# postconf -e 'smtpd_sasl_type = dovecot'
# postconf -e 'smtpd_sasl_path = private/auth'
# postconf -e 'smtpd_sasl_local_domain ='
# postconf -e 'smtpd_sasl_security_options = noanonymous'
# postconf -e 'broken_sasl_auth_clients = no'
# postconf -e 'smtpd_sasl_auth_enable = yes'
# postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

Create certificate:

# touch vmail.key
# chmod 600 vmail.key
# openssl genrsa 1024 > vmail.key
# openssl req -new -key vmail.key -x509 -days 3650 -out vmail.crt
# openssl req -new -x509 -extensions v3_ca -keyout vmail.key.pem -out vmail.crt.pem -days 3650
# mv vmail.key /etc/ssl/private/
# mv vmail.crt /etc/ssl/certs/
# mv vmail.key.pem /etc/ssl/private/
# mv vmail.crt.pem /etc/ssl/certs/

Configure tls:

# postconf -e 'smtp_tls_security_level = may'
# postconf -e 'smtpd_tls_security_level = may'
# postconf -e 'smtp_tls_note_starttls_offer = yes'
# postconf -e 'smtpd_tls_key_file = /etc/ssl/private/vmail.key'
# postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/vmail.crt'
# postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/vmail.crt.pem'
# postconf -e 'smtpd_tls_loglevel = 1'
# postconf -e 'smtpd_tls_received_header = yes'
# vim /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/ssl/certs/vmail.crt
ssl_key = </etc/ssl/private/vmail.key

Configure feeds:

# vim /etc/dovecot/conf.d/10-mail.conf
namespace inbox {
  type = private
  separator = /
  inbox = yes
}
namespace {
  type = public
  separator = /
  prefix = Feeds/
  location = maildir:/home/vmail/feeds:INDEX=/home/vmail/%u/feeds
  subscriptions = no
}
mail_plugins = acl
# vim /etc/dovecot/conf.d/20-imap.conf
protocol imap {
  mail_plugins = $mail_plugins imap_acl
}
# vim /etc/dovecot/conf.d/90-acl.conf
plugin {
  acl = vfile
}

remember to open your firewall and restart the services. you might also change vim /etc/dovecot/conf.d/15-lda.conf lda_mailbox_autocreate and lda_mailbox_autosubscribe

Usage

# vmail create user@host
# vmail alias alias@other user@host
# vmail alias client@host user@extern
# vmail list host
# vmail remove user@host
# vmail feed xkcd http://xkcd.com/rss.xml
# vmail checkfeed '*'

vmail is BSD licensed, Copyright (c) 2013 Martin Schnabel

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL