One sticky point when defining variables (both on back ends and in Emacs in general) is that some variables are typically initialized from other variables when the definition of the variables is being loaded. If you change the “base” variable after the variables have been loaded, you won't change the “derived” variables.
This typically affects directory and file variables. For instance,
nnml-directory is ~/Mail/ by default, and all
directory variables are initialized from that variable, so
nnml-active-file will be ~/Mail/active. If you define a
nnml server, it will not suffice to set just
nnml-directory—you have to explicitly set all the file
variables to be what you want them to be. For a complete list of
variables for each back end, see each back end's section later in this
manual, but here's an example
(nnml "public" (nnml-directory "~/my-mail/") (nnml-active-file "~/my-mail/active") (nnml-newsgroups-file "~/my-mail/newsgroups"))
Server variables are often called server parameters.