ProFTPD mit mod_vroot bauen

Da ich mich wunderte, dass das ProFTPD Modul mod_vroot in vielen Distributionen nicht mehr verfügbar ist, hier mal der Debian-way.

Aktuelle mod_vroot Releases: https://github.com/Castaglia/proftpd-mod_vroot/releases
Aktuelle/stabile ProFTPD Version: http://www.proftpd.org/

Installation:

# Abhängigkeiten installieren
apt-get build-dep proftpd-dfsg

# Benutzer hinzufügen
adduser --system --disabled-login --no-create-home --home /run/proftpd proftpd
mkdir -p /run/proftpd
chown proftpd:nogroup /run/proftpd

# Herunterladen, bauen
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.6.tar.gz
tar xfvz proftpd-1.3.6.tar.gz
cd proftpd-1.3.6/contrib
wget https://github.com/Castaglia/proftpd-mod_vroot/archive/v0.9.5.tar.gz
tar xfvz v0.9.5.tar.gz
mv proftpd-mod_vroot-0.9.5/ mod_vroot
cd ..
./configure --prefix=/usr --sysconfdir=/etc/proftpd --localstatedir=/var --enable-openssl --with-modules=mod_vroot
make
make install

Eine Service-Datei („/etc/systemd/system/proftpd.service“):

[Unit]
Description=ProFTPD FTP Server
After=network.target

[Service]
Type=forking
PIDFile=/run/proftpd/proftpd.pid
ExecStart=/usr/sbin/proftpd
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy = multi-user.target

Mit anschließendem „systemctl enable proftpd.service“ aktivieren.

Eine Konfigurationsdatei (Beispiel):

ServerName                      "FTP"
ServerIdent                     on "FTP Server ready."
ServerAdmin                     cow@localhost
PidFile				/run/proftpd/proftpd.pid
DefaultServer                   on
VRootEngine                     on
DefaultRoot                     ~ !adm
AuthPAMConfig                   proftpd
AuthOrder                       mod_auth_pam.c* mod_auth_unix.c
UseReverseDNS                   off
User                            proftpd
Group                           nogroup
MaxInstances                    20
UseSendfile                     off
LogFormat                       default "%h %l %u %t \"%r\" %s %b"
LogFormat                       auth    "%v [%P] %h %t \"%r\" %s"
ListOptions                     -a
RequireValidShell               off
PassivePorts                    12000 12100
<Global>
  Umask                         002
  IdentLookups                  off
  AllowOverwrite                yes
  <Limit ALL SITE_CHMOD>
    AllowAll
  </Limit>
</Global>

Das Modul muss nicht explizit geladen werden.

mailcow 0.14 ist nun „final“

Mailcow

Hallo zusammen,

das hat eine Weile gedauert, dafür aber mit vielen neuen Features…

- WebUI per mailbox: Enforce in- and outbound TLS
  - ! Works best with Postfix >=3.0 (*uses smtp_dsn_filter to turn temp. TLS errors to perm. errors to notify client instantly)
- WebUI per mailbox: Set black- and whitelist records for spam filter
- WebUI: Drag and drop Postfix restrictions
- Switched WebUI to PDO database interface
- Added some options to /var/www/mail/inc/vars.inc.php (please use `vars.local.inc.php` to overwrite settings)
- Multi-language Web UI (English, Portuguese and German)
- Fixed errors in Web UI
- Removed backup from Web UI and added "mailcow-backup-mail" script
- (Hopefully) RFC compliant email addresses
- **Z-Push removed** - choose between SOGo (ActiveSync + DAV) and Roundcube
- Better Sender ACL (find it at "edit mailbox")
- Fail2ban was removed and should be setup according to your own setup
- letsencrypt.sh/dehydrated was added to provide a signed certificate (optional)

Ja, nun tatsächlich auch auf Deutsch. :-)
Besonders erwähnenswert sind vermutlich die „Enforce TLS“ Option sowie die Postfix Restrictions per „Drag and Drop“

Als Hinweis zu „Works best with Postfix >=3.0“: Neuere Versionen von Postfix erlauben die DSN in benutzerdefinierten Fällen von 4.x.x zu 5.x.x zu verändern. So bekommen wir ausgehend bei fehlendem TLS-Support eine umgehende Mitteilung. Ansonsten verbleibt die Nachricht in der Queue, bis sie schlussendlich abgelehnt wird (üblicherweise 24h).

Viele Grüße
André