Error with restarting proftpd server SQL mod

Discussion in 'HOWTO-Related Questions' started by Sardonis, Apr 29, 2009.

  1. Sardonis

    Sardonis New Member


    I hope you can help me..

    I followed your guide to install a proftpd server on ubuntu so i tried it on
    ubuntu 9.04

    The only difference is that

    apt-get install proftpd-mysql gave me this error:

    [email protected]:~$ sudo apt-get install proftpd-mysql
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Package proftpd-mysql is not available, but is referred to by another
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    E: Package proftpd-mysql has no installation candidate

    So I googled a bit and installed it like this:

    sudo apt-get install proftpd-mod-mysql

    Actually I don't really know what i'm doing here..

    So everything goes fine. I can connect to my SQL database and phpmyadmin is
    working and I see the tables but when I want to restart the proftpd server
    with the configured proftpd.conf file I get this error..

    - Fatal: unknown configuration directive 'SQLBackend' on line 173 of

    Are there any things I need to check to make sure I have a correct version
    of proftpd installed?

    Greetings and thanks in advance,


    Below you'll find the conf file:

    # /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
    # To really apply changes reload proftpd after modifications.

    # Includes DSO modules
    Include /etc/proftpd/modules.conf

    # Set off to disable IPv6 support which is annoying on IPv4 only boxes.
    UseIPv6 off
    # If set on you can experience a longer connection delay in many cases.
    IdentLookups off

    ServerName "Debian"
    ServerType standalone
    DeferWelcome off

    MultilineRFC2228 on
    DefaultServer on
    ShowSymlinks on

    TimeoutNoTransfer 600
    TimeoutStalled 600
    TimeoutIdle 1200

    DisplayLogin welcome.msg
    DisplayChdir .message true
    ListOptions "-l"

    DenyFilter \*.*/

    # Use this to jail all users in their homes
    # DefaultRoot ~

    # Users require a valid shell listed in /etc/shells to login.
    # Use this directive to release that constrain.
    # RequireValidShell off

    # Port 21 is the standard FTP port.
    Port 21

    # In some cases you have to specify passive ports range to by-pass
    # firewall limitations. Ephemeral ports can be used for that, but
    # feel free to use a more narrow range.
    # PassivePorts 49152 65534

    # If your host was NATted, this option is useful in order to
    # allow passive tranfers to work. You have to use your public
    # address and opening the passive ports used on your firewall as well.
    # MasqueradeAddress

    # This is useful for masquerading address with dynamic IPs:
    # refresh any configured MasqueradeAddress directives every 8 hours
    <IfModule mod_dynmasq.c>
    # DynMasqRefresh 28800

    # To prevent DoS attacks, set the maximum number of child processes
    # to 30. If you need to allow more than 30 concurrent connections
    # at once, simply increase this value. Note that this ONLY works
    # in standalone mode, in inetd mode you should use an inetd server
    # that allows you to limit maximum number of processes per service
    # (such as xinetd)
    MaxInstances 30

    # Set the user and group that the server normally runs at.
    User proftpd
    Group nogroup

    # Umask 022 is a good standard umask to prevent new files and dirs
    # (second parm) from being group and world writable.
    Umask 022 022
    # Normally, we want files to be overwriteable.
    AllowOverwrite on

    # Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
    # PersistentPasswd off

    # This is required to use both PAM-based authentication and local passwords
    # AuthOrder mod_auth_pam.c* mod_auth_unix.c

    # Be warned: use of this directive impacts CPU average load!
    # Uncomment this if you like to see progress and transfer rate with ftpwho
    # in downloads. That is not needed for uploads rates.
    # UseSendFile off

    TransferLog /var/log/proftpd/xferlog
    SystemLog /var/log/proftpd/proftpd.log

    <IfModule mod_quotatab.c>
    QuotaEngine off

    <IfModule mod_ratio.c>
    Ratios off

    # Delay engine reduces impact of the so-called Timing Attack described in
    # It is on by default.
    <IfModule mod_delay.c>
    DelayEngine on

    <IfModule mod_ctrls.c>
    ControlsEngine off
    ControlsMaxClients 2
    ControlsLog /var/log/proftpd/controls.log
    ControlsInterval 5
    ControlsSocket /var/run/proftpd/proftpd.sock

    <IfModule mod_ctrls_admin.c>
    AdminControlsEngine off

    # Alternative authentication frameworks
    #Include /etc/proftpd/ldap.conf
    #Include /etc/proftpd/sql.conf

    # This is used for FTPS connections
    #Include /etc/proftpd/tls.conf

    # A basic anonymous configuration, no upload directories.

    # <Anonymous ~ftp>
    # User ftp
    # Group nogroup
    # # We want clients to be able to login with "anonymous" as well as "ftp"
    # UserAlias anonymous ftp
    # # Cosmetic changes, all files belongs to ftp user
    # DirFakeUser on ftp
    # DirFakeGroup on ftp
    # RequireValidShell off
    # # Limit the maximum number of anonymous logins
    # MaxClients 10
    # # We want 'welcome.msg' displayed at login, and '.message' displayed
    # # in each newly chdired directory.
    # DisplayLogin welcome.msg
    # DisplayChdir .message
    # # Limit WRITE everywhere in the anonymous chroot
    # <Directory *>
    # <Limit WRITE>
    # DenyAll
    # </Limit>
    # </Directory>
    # # Uncomment this if you're brave.
    # # <Directory incoming>
    # # # Umask 022 is a good standard umask to prevent new files and dirs
    # # # (second parm) from being group and world writable.
    # # Umask 022 022
    # # <Limit READ WRITE>
    # # DenyAll
    # # </Limit>
    # # <Limit STOR>
    # # AllowAll
    # # </Limit>
    # # </Directory>
    # </Anonymous>
    DefaultRoot ~
    SQLBackend mysql

    # The passwords in MySQL are encrypted using CRYPT
    SQLAuthTypes Plaintext Crypt
    SQLAuthenticate users groups

    # used to connect to the database
    # [email protected] database_user user_password
    SQLConnectInfo [email protected] proftpd fujifilm

    # Here we tell ProFTPd the names of the database columns in the "usertable"
    # we want it to interact with. Match the names with those in the db
    SQLUserInfo ftpuser userid passwd uid gid homedir shell

    # Here we tell ProFTPd the names of the database columns in the "grouptable"
    # we want it to interact with. Again the names match with those in the db
    SQLGroupInfo ftpgroup groupname gid members

    # set min UID and GID - otherwise these are 999 each
    SQLMinID 500

    # create a user's home directory on demand if it doesn't exist
    CreateHome on

    # Update count every time user logs in
    SQLLog PASS updatecount
    SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE
    userid='%u'" ftpuser

    # Update modified everytime user uploads or deletes a file
    SQLLog STOR,DELE modified
    SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

    # User quotas
    # ===========
    QuotaEngine on
    QuotaDirectoryTally on
    QuotaDisplayUnits Mb
    QuotaShowQuotas on

    SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session,
    limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail,
    files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE
    name = '%{0}' AND quota_type = '%{1}'"

    SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used,
    bytes_out_used, bytes_xfer_used, files_in_used, files_out_used,
    files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type =

    SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used +
    %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used =
    bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used
    = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name
    = '%{6}' AND quota_type = '%{7}'" ftpquotatallies

    SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5},
    %{6}, %{7}" ftpquotatallies

    QuotaLimitTable sql:/get-quota-limit
    QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

    RootLogin off
    RequireValidShell off
    Last edited: Apr 29, 2009
  2. falko

    falko Super Moderator ISPConfig Developer

    I guess you must either uncomment
    Include /etc/proftpd/sql.conf
    or make sure that the MySQL module is enabled in /etc/proftpd/modules.conf.
  3. Sardonis

    Sardonis New Member


    enabling the right module brings me a step further..

    [email protected]:/etc/proftpd# /etc/init.d/proftpd restart
    * Stopping ftp server proftpd [ OK ]
    * Starting ftp server proftpd /etc/init.d/proftpd: line 88: 7874 Segmentation fault start-stop-daemon --start --quiet --pidfile "$PIDFILE" --oknodo --exec $DAEMON -- $OPTIONS

    A segmentation fault
  4. falko

    falko Super Moderator ISPConfig Developer

    What exactly did you change?

    Can you run line 88 from /etc/init.d/proftpd manually on the command line? Make sure you replace variables like $PIDFILE, $DAEMON, and $OPTIONS with the right values (the variables should also be defined in /etc/init.d/proftpd).
  5. tzd

    tzd New Member

    I had the very same issue myself:

    For me it helped editing the /etc/proftpd/modules.conf file.

    Once in there the thing I've missed that caused the above issue was the setting called:
    # Install proftpd-mod-mysql or proftpd-mod-pgsql to use this
    LoadModule mod_sql.c

    I don't really dare running the ftp server 24/7 though since there's only v. 1.3.1 in the ubuntu repos (the one I have installed) and i've got some bad experiences from installing from source. Awaiting patiently the .deb package!


Share This Page