The problem is the file glob on line 344 in convert_subscriptions() # read updates from the directory my %updates; foreach (<$keyword_dir/*>) { This isn't going to pick up any files beginning with a dot, so most of the update files in the courierimapkeywords directory are going to be skipped.