All command processing calls FML::Command::MODE::COMMAND class via FML::Command class. GUI, CUI and command mail has different pre processing stage.
We adopt new frame work after 2004/03/05.
Firstly, parse and analyze each line in one message.
An empty line is ignored. The buffer is clean up. After them, check if the command line is allowed in our context.
1) if this command matches anonymous command such as "guide" or "subscribe", call command processor. Allowd list of commands are defined in $anonymous_command_mail_allowed_commands.
2) if this command matches a normal command which are allowd for a member, check other conditions based on rules of $command_mail_restrictions. Allowd list of commands are defined in $user_command_mail_allowed_commands.
Command dispatcher checks the return path dependent on the command and the syntax, finally executes the command via FML::Command class. This process runs as normal user priviledge.
"admin" command needs administrator priviledge. So an exception. If "admin" command is given, process user priviledged "admin" command and execute FML::Command::User::admin class.  In this user command class, checks the context by $admin_command_mail_restrictions to see that the current context has remote administrator priveledge. If enough priviledge is satisfied, execute FML::Command::Admin::COMMAND class via FML::Command again. FML::Command::Admin::COMMAND needs admin priviledge.
If you use this program, you can have priveledge to login the mailing list server host and switch user to the user "fml". So please use CUI as you like. In this case, CUI calls FML::Command::Admin::COMMAND directly.
admin command is defined in $user_command_mail_allowed_commands as a normal user command.
Copyright (C) 1993-2018 Ken'ichi Fukamachi mail:< fukachan at fml.org >