Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Ever since I went from Ubuntu 9.04 to Debian 6.0, I've been having this issue:

Filezilla will do this:

Status: Connecting to x.x.x.x:21...
Status: Connection established, waiting for welcome message...
Response:   220-Connected!
Response:   220 xxx Home Server
Command:    USER xxx
Response:   331 Password required for xxx
Command:    PASS ********
Response:   230-Welcome!
Response:   230 User xxx logged in
Command:    SYST
Response:   230 Ls oi a:2011-11-06 00:41:06
Command:    FEAT
Response:   215 UNIX Type: L8
Status: Connected
Status: Retrieving directory listing...
Command:    PWD
Response:   211-Features:
Response:    LANG en-US.UTF-8*;en-US
Response:    MDTM
Response:    MFMT
Response:    TVFS
Response:    UTF8
Response:    MFF modify;;UNIX.mode;
Response:    MLST modify*;perm*;size*;type*;unique*;*;UNIX.mode*;UNIX.owner*;
Response:    REST STREAM
Response:    SIZE
Response:   211 End
Error:  Failed to parse returned path.
Error:  Failed to retrieve directory listing
Response:   257 "/" is the current directory
Error:  Connection closed by server

However if I click quick connect again:

Status: Connecting to x.x.x.x:21...
Status: Connection established, waiting for welcome message...
Response:   220-Connected!
Response:   220 xxxx Home Server
Command:    USER xxxx
Response:   331 Password required for xxxx
Command:    PASS ********
Response:   230-Welcome!
Response:   230 User xxxx logged in
Status: Connected
Response:   230 Ls oi a:2011-11-06 00:48:32
Status: Retrieving directory listing...
Command:    PWD
Response:   257 "/" is the current directory
Status: Directory listing successful

Whoa, odd, I also see that features are not being printed, if I try with an online FTP tester:

Status: Connecting to x.x.x.x
Status: Connected, waiting for welcome message
Reply: 220-Connected!
Reply: 220 xxxx Home Server
Command: CLNT on behalf of y.y.y.y
Reply: 500 CLNT not understood
Command: USER xxxx
Reply: 331 Password required for xxxx
Command: PASS ********
Reply: 230-Welcome!
Reply: 230 User xxxx logged in
Command: SYST
Reply: 230 Ls oi a:2011-11-06 00:44:45
Command: FEAT
Reply: 215 UNIX Type: L8
Command: PWD
Reply: 211-Features:
Reply: LANG en-US.UTF-8;en-US*
Reply: MDTM
Reply: MFMT
Reply: TVFS
Reply: UTF8
Reply: MFF modify;;UNIX.mode;
Reply: MLST modify*;perm*;size*;type*;unique*;*;UNIX.mode*;UNIX.owner*;
Reply: SIZE
Reply: 211 End
Error: No path found in PWD reply

I've been poking at configs for awhile and am completely stumped on where to go from here (it seems to have to do with how ProFTPd is responding to the requests, but I have yet to nail down why it's spitting out feature lists randomly). :( Any ideas? Did ProFTPd just break itself in 1.3.3?


LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
#LoadModule mod_tls.c
ServerName xxxx
ServerType standalone
ServerIdent on "xxxx Home Server"
DeferWelcome on
DefaultServer on

AllowStoreRestart on
AllowRetrieveRestart on
RequireValidShell               off
PathDenyFilter                  "\\.ftp)|\\.ht)[a-z]+$"
DefaultRoot             ~
DenyFilter \*.*/
UseReverseDNS off
IdentLookups off

# Various messages.
DisplayLogin            /etc/proftpd/.welcome       # Textfile to display on login
DisplayConnect          /etc/proftpd/.connect       # Textfile to display on connection
DisplayChdir            /etc/proftpd/.firstchdir    # Textfile to display on first changedir

Port                    21
PassivePorts            49152 65535

MaxInstances 15
MaxClientsPerHost       50 "Only %m connections per host allowed"
MaxClients              100 "Only %m total simultanious logins allowed"
MaxHostsPerUser         10

User                    nobody
Group                   nogroup
Umask                   000

ScoreboardFile          /var/log/scoreboard

Include /etc/proftpd/sql.conf

DeferWelcome on


# Set up authentication via SQL
# ===========
AuthOrder                       mod_sql.c
SQLAuthTypes            Backend
SQLConnectInfo              proftpd_admin@localhost user pass
SQLUserInfo             usertable userid passwd uid gid homedir shell 
SQLGroupInfo            grouptable groupname gid members 
SQLUserWhereClause          "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"

# Log the user logging in
SQLLog PASS counter
SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable

# logout log
SQLLog EXIT time_logout
SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable

# display last login time when PASS command is given
SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
SQLShowInfo PASS "230" "Last login was: %{login_time}"

# xfer Log in mysql
SQLLog RETR,STOR transfer1
SQLNamedQuery  transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat
SQLNamedQuery  transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat
share|improve this question
May I ask why you using FTP in the first place? It's inherently an insecure protocol as it sends passwords in plain text, most modern FTP clients have native support for SFTP and since your running Linux it supports natively on the server as well. – Brandon Nov 6 '11 at 5:01
Adding TLS support to this is trivial, but I'm not going to complicate the problem. I'll be enabling mod_tls once this is running right. As for SFTP, the application I'm configuring this for (backups) doesn't support it. I could script around it but would rather just run with FTP + TLS (plus scripting it will cause me to lose a lot of features). – StrangeWill Nov 6 '11 at 5:07
What does proftpd.conf look like? – quanta Nov 6 '11 at 7:00
Updated with proftpd.conf + sql.conf. – StrangeWill Nov 6 '11 at 15:00
up vote 2 down vote accepted

There is a bug in ProFTPd v1.3.3 with multi-line output.

This line of output shouldn't be there, or at least shouldn't look like it does:

Reply: 230 Ls oi a:2011-11-06 00:44:45

It is being interpreted as the output for 'SYST', so when the 'FEAT' command it issued, the 'SYST' output is being read, and when 'PWD' is issued, some of the feature response is being read.

The second connection doesn't ask for SYST and FEAT, so the timings seem to be more forgiving.

The internet knows of one other person who has had this problem (with that combination of letters missing!) and their workaround is:

Try commenting out the SQLShowInfo lines from your sql.conf file.

This Debian bug says the problem is fixed in 1.3.4 pre-release upstream, and suggests you may have to use a backport to get the correct behaviour as it is unlikely to be considered critical functionality or security, thus warranting a stable patch.

share|improve this answer
Awesome! Rolled unstable proftpd onto the server tonight, everything looks good to go, once we run our primary backup tonight and can confirm this works outside of FileZilla you get your hard-earned points! – StrangeWill Nov 13 '11 at 5:12
Just an update for anyone that stumbles across this, comment out SQLShowInfo, dealing with mixed repos is suicide. – StrangeWill Nov 29 '11 at 16:24

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.