ProFTPD Server for Debian
-------------------------

** Debian is different

Current maintainer (me) of proftpd on Debian has the questionable
habit to integrate many cvs-stolen intermediate patches to the official
proftpd release, to fix known issues and provide preview features.
The result is that the released program can be quite far from the
original tarball, so do not bother upstream team with bug reporting
about Debian proftpd, without pre-check with the maintainer. At the same
time, do not desume that some known specific problems are not fixed on
the basis of the declared upstream version: that could be not true. 
Read the maintainer changelog before reporting.

** Different authorization layers

The most exotic authorization and add-on layers (based on MySQL,
PostgreSQL, LDAP, etc.) are split in different independent packages,
named proftpd-mod-* and you need to install the required add-on package
in order to use those types of authentication modes with the proftpd-basic
package, where all other main modules live. See also Dynamic Modules in
this document below.

In order to use those modules you have to decomment
the appropriate lines in /etc/proftpd/modules.conf and include that file
from /etc/proftpd/proftpd.conf, as shown in basic templates stored in
the /usr/share/proftpd/templates directory. Note that there are
some implicit inter-dependencies in shared modules and the order used
in /etc/proftpd/proftpd.conf is NOT casual. If you got some weird
segfaults at run-time, you are probably using a wrong configuration:
consider that currently proftpd is quite weak in managing DSO anomalies,
so be careful.

** IPv6 issue:

In standalone mode proftpd binds both IPv4 and IPv6 addresses. That
causes a quite annoying message at startup on IPv4-only boxes, such as:

	IPv6 getaddrinfo 'your_host_name' error: Name or service not known

That can be avoided by keeping an IPv6 mapping for your_host_name in your /etc/hosts file, such as:

	::1 ip6-localhost ip6-loopback your_host_name

or also

	::fff:A.B.C.D	your_host_name

when you got a static IPv4 address A.B.C.D. The same is required for all IP4/6 addresses, just
in case your nameserver does not map your hostname and IPs.

Debian proftpd since 1.3.0-14 is also patched to disable IPv6 at run-time using the

UseIPv6 off

directive in /etc/proftpd/proftpd.conf file or using the following options:

-4, --ipv4     Support IPv4 functionality only
-6, --ipv6     Support IPv6 functionality

Starting from 1.3.2, upstream default has become having IPv6 off, but Debian has still
it on by default to be consistent with the past.

** Dynamic modules

Starting from 1.3.0 version proftpd supports DSO modules, which are loaded at run time
consulting the Debian-specific /etc/proftpd/modules.conf file, which must be included
in your /etc/proftpd/proftpd.conf configuration file.

Note that in case of SQL modules you need to comment out the unused back-end module 
(e.g. mod_sql_mysql if you use mod_sql_postgres or viceversa) in order to have the right 
authentication module working, or to change the auth order in your config file.
Alternatively, you should use the explicit 'SQLBackend' directive, as shown in the default 
configuration file. Note that the SQL auth layer requires that both mod_sql.c _and one_ 
specific backend (e.g. mod_sql_mysql.c) are loaded in that order to work correctly.

As always, your old proftpd.conf is NOT ensured to work smoothly with the current release:
that can be due to changes in directives and defaults for core or contributed modules.
You are strongly advised to consult documentation in order to upgrade your existent
configuration.

** IPv6 and CIDR notation considerations:

Keep attention to the use of CIDR notation in Allow/Deny directives with IPv6 address space!
A naive approach would be writing something like:

	Allow ::ffff:A.B.C.D/24
	Deny all

to allow your own IPv4 subnet and deny all the rest. 
That's definitively WRONG! IPv6 CIDR are considered on a 128 bits range, therefore that directive 
would allow access to the whole IPv4 address space instead! So a proper directive in that
case is

	Allow ::ffff:A.B.C.D/120
	Deny all


** Other information

Please, read accurately the NEWS, README and changelog file in /usr/share/doc/proftpd-basic
to find novelties of this version if you are upgrading from a pre-1.3.1 release.
It is also extremely useful installing the proftpd-doc package for additional information
and HOWTOs. Read specifically documentation about the now mandatory AuthOrder specification 
for all 'exotic' authorization engines. That is specifically important before reporting
bugs. If after that you still thought to have found a bug, please follow the mini-howto

http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-Debugging.html

to report properly all required information. Without that, your report is very unlikely
to be considered by both maintainer and upstreams. Also, do not presume soon to have
found a bug, please think twice before reporting on the Debian BTS, thanks.

If you were more inclined you can try to contact on-line the maintainer or the
ProFTPD team in the #proftpd channel on irc.freenode.net.

