Законченное движение sendmail маршрут обертки с помощью следующего ресурса: http://kb.parallels.com/1711
Существует способ найти то, от чего папки был выполнен Сценарий PHP, который отправляет почту. Отметьте, пути могут быть, немного отличаются от нижеупомянутого в зависимости от Вашей ОС и версии Plesk:
1) создайте/var/qmail/bin/sendmail-wrapper сценарий с содержанием:
!/bin/sh (повторяют X-Additional-Header: $PWD; кошка), | кладут-a для первого удара/var/tmp/mail.send |/var/qmail/bin/sendmail-qmail "$"
Отметьте, это должны быть эти две строки включая '#!/bin/sh'. 2) затем создайте файл журнала/var/tmp/mail.send и предоставьте ему "a+rw" права, сделайте обертку e> xecutable, переименуйте старый sendmail и свяжите его с новой оберткой: ~ # касаются/var/tmp/mail.send ~ # chmod a+rw/var/tmp/mail.send ~ # chmod a+x/var/qmail/bin/sendmail-wrapper ~ # mv/var/qmail/bin/sendmail/var/qmail/bin/sendmail-qmail ~ # ln-s/var/qmail/bin/sendmail-wrapper,/var/qmail/bin/sendmail 3) Ожидают в течение приблизительно одного часа и возвращаются sendmail назад:
~ # комната-f/var/qmail/bin/sendmail ~ # ln-s/var/qmail/bin/sendmail-qmail/var/qmail/bin/sendmail
Исследуйте/var/tmp/mail.send файл, должны быть строки, запускающиеся с "X-Additional-Header": указание папкам доменов, где сценарии, которые отправили почту, расположены. Вы видите, что все почтовые Сценарии PHP папок были выполнены от со следующей командой:
~ # grep X-Additional/var/tmp/mail.send | grep
cat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e 's/HTTPD_VHOSTS_D//'
f Вы не видите вывода от команды выше, это означает, что никакая почта не была отправлена с помощью почты PHP () функция из Plesk виртуальный каталог хостов.
Я нашел решение, которое мне подходит. Я создаю открытые / закрытые ключи на своей машине, на которой запускается Ansible, и при первом подключении я вставляю ключи на место.
Затем я добавляю ключи от всех подчиненных устройств к главному устройству следующим образом:
# Tasks for PostgreSQL master
- name: add slave public key
sudo: yes
authorized_key: user=postgres state=present key="{{ lookup('file', '../../../keys/' + item + '/id_rsa.pub') }}"
with_items: groups.databases_slave
Полное руководство можно найти на github.com/soupdiver/ansible-cluster .
Я считаю, что в вашем случае должно работать следующее решение. Я использовал его для аналогичного сценария с центральным сервером резервного копирования и несколькими клиентами резервного копирования.
У меня есть роль (скажем, « db_replication_master »), связанная с сервером, получающим соединения:
- role: db_replication_master
db_slaves: ['someserver', 'someotherserver']
db_slave_user: 'someuser' # in case you have different users
db_master_user: 'someotheruser'
extra_pubkeys: ['files/id_rsa.pub'] # other keys that need access to master
Затем мы создаем актуальные задачи в роли db_replication_master :
- name: create remote accounts ssh keys
user:
name: "{{ db_slave_user }}"
generate_ssh_key: yes
delegate_to: "{{ item }}"
with_items: db_slaves
- name: fetch pubkeys from remote users
fetch:
dest: "tmp/db_replication_role/{{ item }}.pub"
src: "~{{db_slave_user}}/.ssh/id_rsa.pub"
flat: yes
delegate_to: "{{ item }}"
with_items: db_slaves
register: remote_pubkeys
changed_when: false # we remove them in "remove temp local pubkey copies" below
- name: add pubkeys to master server
authorized_key:
user: "{{ db_master_user }}"
key: "{{ lookup('file', item) }}"
with_flattened:
- extra_pubkeys
- "{{ remote_pubkeys.results | default({}) | map(attribute='dest') | list }}"
- name: remove temp local pubkey copies
local_action: file dest="tmp/db_replication_role" state=absent
changed_when: false
Итак, мы в основном:
Ограничение наличия одного и того же пользователя на всех хостах, вероятно, можно обойти, но из того, что я получил из вашего вопроса, это, вероятно, не проблема для вас (это немного более актуально для моего сценария резервного копирования ). Конечно, вы также можете сделать настраиваемым тип ключа (rsa, dsa, ecdsa и т. Д.).
Обновление : ой, я изначально использовал терминологию, специфичную для моей проблемы, а не вашей ! Теперь должно быть больше смысла.
У меня такая же проблема, и я решил ее следующим образом:
---
# Gather the SSH of all hosts and add them to every host in the inventory
# to allow passwordless SSH between them
- hosts: all
tasks:
- name: Generate SSH keys
shell: ssh-keygen -q -t rsa -f /root/.ssh/id_rsa -N ''
args:
creates: /root/.ssh/id_rsa
- name: Allow passwordless SSH between all hosts
shell: /bin/cat /root/.ssh/id_rsa.pub
register: ssh_keys
- name: Allow passwordless SSH between all hosts
lineinfile:
dest: /root/.ssh/authorized_keys
state: present
line: " {{ hostvars[item]['ssh_keys']['stdout'] }}"
with_items: "{{ groups['all']}}"