feat(mailserver): Add alias management via ubus

- Fix alias_add RPCD to read JSON from stdin (ubus compatibility)
- Add alias_del function to users.sh
- Add alias del command to mailctl
- Add alias_del RPCD method

Tested: alias_add, alias_list, alias_del all work via ubus call

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-02-16 12:38:55 +01:00
parent 67441bd97b
commit 23c38cd2f1
3 changed files with 53 additions and 1 deletions

View File

@ -23,6 +23,7 @@ case "$1" in
"user_del": { "email": "string" },
"user_passwd": { "email": "string", "password": "string" },
"alias_add": { "alias": "string", "target": "string" },
"alias_del": { "alias": "string" },
"dns_setup": {},
"ssl_setup": {},
"webmail_configure": {},
@ -275,7 +276,13 @@ case "$1" in
;;
alias_add)
json_load "$3"
# Read JSON from stdin or $3
if [ -n "$3" ]; then
json_load "$3"
else
read -r _input
json_load "$_input"
fi
json_get_var aalias alias
json_get_var target target
@ -291,6 +298,28 @@ case "$1" in
json_dump
;;
alias_del)
# Read JSON from stdin or $3
if [ -n "$3" ]; then
json_load "$3"
else
read -r _input
json_load "$_input"
fi
json_get_var aalias alias
json_init
if [ -z "$aalias" ]; then
json_add_int "code" 1
json_add_string "error" "Alias required"
else
output=$($MAILCTL alias del "$aalias" 2>&1)
json_add_int "code" "$?"
json_add_string "output" "$output"
fi
json_dump
;;
dns_setup)
json_init
output=$($MAILCTL dns-setup 2>&1)

View File

@ -156,6 +156,27 @@ alias_add() {
echo "Alias added: $alias$target"
}
# Delete alias
alias_del() {
local alias="$1"
[ -z "$alias" ] && { echo "Usage: alias_del <alias@domain>"; return 1; }
local container=$(get_container)
local data_path=$(get_data_path)
local valias="$data_path/config/valias"
if [ ! -f "$valias" ] || ! grep -q "^$alias " "$valias"; then
echo "Alias not found: $alias"
return 1
fi
sed -i "/^$alias /d" "$valias"
lxc-attach -n "$container" -- postmap /etc/postfix/valias 2>/dev/null
echo "Alias deleted: $alias"
}
# List aliases
alias_list() {
local data_path=$(get_data_path)

View File

@ -172,10 +172,12 @@ cmd_alias() {
case "$action" in
add) alias_add "$@" ;;
del) alias_del "$@" ;;
list) alias_list ;;
*)
echo "Alias commands:"
echo " alias add <alias> <target> Add email alias"
echo " alias del <alias> Delete email alias"
echo " alias list List aliases"
;;
esac