ProFTPD mit mod_vroot bauen

Update 23.09.2018: RuntimeDirectory hinzugefügt

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
RuntimeDirectory=proftpd

[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

  Umask                         002
  IdentLookups                  off
  AllowOverwrite                yes
  
    AllowAll
  

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é