Тривиальный постфикс - переписывает, разворачивает получателя неправильно после того, как виртуальное искажение сделано

Можно использовать следующий код:

java YourApp "$1"

И запустить код следующим образом:

./app.sh your_argument 

-121--249943-

Первый; Есть ли причина, по которой нужно использовать symlinks, а не обычные hardlinks? Мне трудно понять необходимость symlinks с относительными путями. Вот как я бы решил эту проблему:

Я думаю, что версия Debian (Ubuntu) fdupes может заменить дубликаты на жесткие ссылки с помощью параметра -L , но у меня нет установки Debian для проверки это.

Если у вас нет версии с опцией -L , вы можете использовать этот крошечный сценарий bash, который я нашел на commandlinefu .
Обратите внимание, что этот синтаксис будет работать только в bash.

fdupes -r -1 path | while read line; do master=""; for file in ${line[*]}; do if [ "x${master}" == "x" ]; then master=$file; else ln -f "${master}" "${file}"; fi; done; done

Приведенная выше команда найдет все дублированные файлы в «path» и заменит их на жесткие ссылки. Вы можете проверить это, запустив ls -ilR и посмотрев на inode номер. Вот пример с десятью идентичными файлами:

$ ls -ilR

total 20
3094308 -rw------- 1 username group  5 Sep 14 17:21 file
3094311 -rw------- 1 username group  5 Sep 14 17:21 file2
3094312 -rw------- 1 username group  5 Sep 14 17:21 file3
3094313 -rw------- 1 username group  5 Sep 14 17:21 file4
3094314 -rw------- 1 username group  5 Sep 14 17:21 file5
3094315 drwx------ 1 username group 48 Sep 14 17:22 subdirectory

./subdirectory:
total 20
3094316 -rw------- 1 username group 5 Sep 14 17:22 file
3094332 -rw------- 1 username group 5 Sep 14 17:22 file2
3094345 -rw------- 1 username group 5 Sep 14 17:22 file3
3094346 -rw------- 1 username group 5 Sep 14 17:22 file4
3094347 -rw------- 1 username group 5 Sep 14 17:22 file5

Все файлы имеют отдельные номера inode, что делает их отдельными файлами. Теперь можно выполнить дедупликацию:

$ fdupes -r -1 . | while read line; do j="0"; for file in ${line[*]}; do if [ "$j" == "0" ]; then j="1"; else ln -f ${line// .*/} $file; fi; done; done
$ ls -ilR
.:
total 20
3094308 -rw------- 10 username group  5 Sep 14 17:21 file
3094308 -rw------- 10 username group  5 Sep 14 17:21 file2
3094308 -rw------- 10 username group  5 Sep 14 17:21 file3
3094308 -rw------- 10 username group  5 Sep 14 17:21 file4
3094308 -rw------- 10 username group  5 Sep 14 17:21 file5
3094315 drwx------  1 username group 48 Sep 14 17:24 subdirectory

./subdirectory:
total 20
3094308 -rw------- 10 username group 5 Sep 14 17:21 file
3094308 -rw------- 10 username group 5 Sep 14 17:21 file2
3094308 -rw------- 10 username group 5 Sep 14 17:21 file3
3094308 -rw------- 10 username group 5 Sep 14 17:21 file4
3094308 -rw------- 10 username group 5 Sep 14 17:21 file5

Все файлы теперь имеют одинаковый номер inode, что означает, что все они указывают на одно и то же физические данные на диске.

Надеюсь, это решит вашу проблему или, по крайней мере, направит вас в правильном направлении!

-121--27778-

Установка монетного двора с /домашним на твердотельный накопитель. Определите UUID раздела /home на жестком диске. Добавьте строку к /etc/fstab , чтобы установить этот диск на проход позже /.

1
05.11.2014, 01:39
2 ответа

Итак, я смог решить свою проблему, как я предлагал в конце своего вопроса, но я также пришел к выводу, что избегание виртуальных доменов может быть правильным путем.

Первое, первоначально предложенное решение: удалить ссылки на a.com из файла virtual.

virtual
-------
#postmaster@a.com  postmaster
#@a.com            userA
postmaster@b.com  postmaster
@b.com            userB
postmaster@c.org  postmaster
@c.org            userC

После того, как я это сделал, виртуальные переводы для b.com и c.org выдали userB@a.com и userC@a.com, как и ожидалось, а поскольку a. com является одной из записей mydestination, postfix/local послушно доставил почту пользователяB на /var/mail/userB и пользователяC на /var/mail/userC.

Конечно, как я и опасался в своем первоначальном вопросе, он все равно делает вывод, что a.com - это конечный домашний домен всех этих пользователей, что кажется мне странным. Очевидным решением, в таком случае, является не использовать виртуальные домены вообще - весь смысл виртуальных доменов в том, чтобы принимать почту для адресов, которые не являются реальными пользователями Unix в системе. Но поскольку все мои универсальные пользователи являются реальными пользователями Unix в системе, я должен просто использовать локальные псевдонимы:

/etc/aliases
------------
admin: postmaster
www: postmaster
@a.com: userA
@b.com: userB
@c.com: userC

Я все еще могу иметь универсальные адреса без использования виртуальных доменов вообще.

0
28.01.2020, 01:51

Технически это не ответ, но, возможно, это лучшее, что вы получите. Я несколько лет работал с большим количеством карт sendmail. Ваша лучшая ставка - разбить ее на части, упростить. Сделайте так, чтобы карта включала только один из ваших доменов, заставьте wildcard работать для этого домена, и стройте оттуда.

Используйте диагностические флаги sendmail, например, флаг sendmail -bv.

0
28.01.2020, 01:51

Теги

Похожие вопросы