Так как Вы не отправили сообщение об ошибке, я просто высказываю образованное предположение здесь. Ваш сценарий делает это:
# Set new password for user
exec expect -f $0 ${1+"$@"}
Это звонит, ожидают с полным путем к Вашему сценарию, переданному как аргумент "-f" опции expect..., что означает, что ожидают, начнет выполняться от верхней части Вашего сценария, не от строки "набора" сразу после Вашего исполнительного оператора.
Это вызовет непосредственную синтаксическую ошибку, потому что сценарий является сценарием оболочки, не ожидать сценарием.
Вы, вероятно, хотите переместить ожидать сценарий в отдельный файл и затем назвать его явно:
exec expect -f my-expect-script ${1+"$@"}
Кроме того, и это не germain к Вашему вопросу, Ваш сценарий использует обе переменные положения (например, "1$"), а также список $args, который Вы инициализируете наверху своего сценария. Вы эффективно делаете то же самое двумя различными способами, которые в какой-то момент приведут к беспорядку и тревоге.
В вашем дистрибутиве исходного кода majordomo существует Doc / majordomo.ora
. Там вы найдете предложение запустить sendmail с ключом -odq, чтобы сначала создать очередь sendmail, вместо того, чтобы пытаться немедленно отправить их. Итак, в вашем majordomo.cf
есть следующая строка:
$mailer = "$sendmail_command -oi -odq -oee -f\$sender";
Sendmail расширяет список, который он должен обрабатывать, и отправлять ему почту. Хотя он расширился и начал отправлять почту членам первого списка, он будет расширяться и отправлять почту членам второго списка. Sendmail пытается идентифицировать идентичные сообщения, чтобы отправить их один раз для каждого отправителя, но если некоторые получатели в списке 1 уже являются процессами, а они также находятся в списке 2, до его расширения, они получат его дважды. Таким образом, с помощью -odq
вы помещаете сообщение в очередь для обоих списков.