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_del": { "email": "string" },
|
||||||
"user_passwd": { "email": "string", "password": "string" },
|
"user_passwd": { "email": "string", "password": "string" },
|
||||||
"alias_add": { "alias": "string", "target": "string" },
|
"alias_add": { "alias": "string", "target": "string" },
|
||||||
|
"alias_del": { "alias": "string" },
|
||||||
"dns_setup": {},
|
"dns_setup": {},
|
||||||
"ssl_setup": {},
|
"ssl_setup": {},
|
||||||
"webmail_configure": {},
|
"webmail_configure": {},
|
||||||
@ -275,7 +276,13 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
alias_add)
|
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 aalias alias
|
||||||
json_get_var target target
|
json_get_var target target
|
||||||
|
|
||||||
@ -291,6 +298,28 @@ case "$1" in
|
|||||||
json_dump
|
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)
|
dns_setup)
|
||||||
json_init
|
json_init
|
||||||
output=$($MAILCTL dns-setup 2>&1)
|
output=$($MAILCTL dns-setup 2>&1)
|
||||||
|
|||||||
@ -156,6 +156,27 @@ alias_add() {
|
|||||||
echo "Alias added: $alias → $target"
|
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
|
# List aliases
|
||||||
alias_list() {
|
alias_list() {
|
||||||
local data_path=$(get_data_path)
|
local data_path=$(get_data_path)
|
||||||
|
|||||||
@ -172,10 +172,12 @@ cmd_alias() {
|
|||||||
|
|
||||||
case "$action" in
|
case "$action" in
|
||||||
add) alias_add "$@" ;;
|
add) alias_add "$@" ;;
|
||||||
|
del) alias_del "$@" ;;
|
||||||
list) alias_list ;;
|
list) alias_list ;;
|
||||||
*)
|
*)
|
||||||
echo "Alias commands:"
|
echo "Alias commands:"
|
||||||
echo " alias add <alias> <target> Add email alias"
|
echo " alias add <alias> <target> Add email alias"
|
||||||
|
echo " alias del <alias> Delete email alias"
|
||||||
echo " alias list List aliases"
|
echo " alias list List aliases"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user