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:
parent
67441bd97b
commit
23c38cd2f1
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user