3 заметки с тегом

почта

По́чта (рус. Почта (инф.); от итал. posta) — термин, используемый для обозначения:

  • — почтовых отправлений;
  • — учреждений связи, к которым относятся: ответственная почтовая администрация и подчинённые структуры — почтамты, узлы связи, транспортные подразделения и сортировочные пункты, а также почтовые отделения в составе почтамтов и узлов связи;
  • — предприятие естественной монополии, производящее и реализующее услуги почтовых отправлений местного, внутреннего и международного уровнях обслуживания на основе лицензий.

Импорт пользователей в Яндекс.Коннект через API

Возникла задача добавить несколько десятков пользователей в Яндекс.Коннект и сразу же начались поиски пути решения, чтобы избавиться от ручного труда и в дальнейшем облегчить жизнь. Решил попробовать вариант от Energys — статья на habr’e. Почему попробовать? За пару лет что-то могло перестать работать, как говорится — «За время пути собака могла подрасти!»

С первого взгляда не понравилось то, что пароли у сотрудников будущих одинаковые — это обязательно нужно было поменять, плюс не указана должность — потребовалось добавить. Однако для общего понимания статья подходит как нельзя лучше. К тому же изменения сравнительно не сложные — готовимся и применяем.

Самое не простое в этой истории — возня с токеном от Яндекса. В статье она описана, пройдем по шагам для истории и чтобы ничего не забыть:

  • * зайти в аккаунт яндекса под администратором домена;
  • * в Я.OAuth первым делом нужно создать приложение;
  • * приложению даем права, в нашем случае — Яндекс.Коннект Directory API;
  • * выбираем платформу «веб-сервисы» и нажимаем «подставить url для разработки»;
  • * сохраняемся и получим ID приложения — именно оно понадобится для получения токене;
  • * вставляем ID приложения и получаем токен:
https://oauth.yandex.ru/authorize?response_type=token&client_id=<ID приложения>
  • * именно этот токен и будет использоваться в скрипте;

Идея сравнительно не сложная:

  1. готовим файл определенного образца;
  2. добавляем переменных;
  3. читаем список из файла;
  4. в запросе в цикле добавляем переменные;
  5. в каждой итерации ждем пару секунд.

Сам скрипт выглядит следующим образом — он же на GitHub:

#!/bin/bash
# path to users list - путь к списку пользователей
employees='./usrlist'
# line example from users list - пример строки файла 
# usrlist: email_lastname_firstname_middlename_password_position
# for example: petrova_Петрова_Авдотья_Федоровна_eeKrutoiparol23_Менеджер

# OAuth_Token
# link to material about token - ссылка на формирование отладочного токена
# https://tech.yandex.ru/oauth/doc/dg/tasks/get-oauth-token-docpage/
# link about our apps - список ваших приложений
# https://oauth.yandex.ru/
# get token from apps id - получить токен из ID приложения
# https://oauth.yandex.ru/verification_code#access_token=435843755894374389
TOKEN="token-here-and-there"

# read and trim user file - читаем и перебираем файл со списком пользователей
for i in $( cat $employees ); do
value=($(echo $i | tr "_" " "))

# make variables for api request from file - заводим переменные для запроса из файла
email="${value[0]}"
lastname="${value[1]}"
firstname="${value[2]}"
middlename="${value[3]}"
password="${value[4]}"
position="${value[5]}"

# Make user for good - создаем сотрудника ради добра
# department = 1 for default - департамент 1 умолчанию
#only http answers, not full - только http ответы, не полный лог
curl -i -X POST -H 'Content-type: application/json' -d '{"department_id": 1, "position": "'$position'", "password": "'$password'", "nickname": "'$email'", "name": {"first": "'$firstname'", "last": "'$lastname'", "middle": "'$middlename'"}}' -H "Authorization: OAuth $TOKEN" 'https://api.directory.yandex.net/v6/users/' | grep HTTP
#full answers - полные ответы
#curl -i -X POST -H 'Content-type: application/json' -d '{"department_id": 1, "position": "'$position'", "password": "'$password'", "nickname": "'$email'", "name": {"first": "'$firstname'", "last": "'$lastname'", "middle": "'$middlename'"}}' -H "Authorization: OAuth $TOKEN" 'https://api.directory.yandex.net/v6/users/' 
# wait for 2 sec - ждем пару секунд
wait 2
done

C чем удалось столкнуться при отладке и работе скрипта? Буквально несколько моментов:

  • * если посылать запросы слишком часто, часть может не сработать — нужно подбирать тайминги между запросами.. пауза в 1-2 секунды работает;
  • * обязательно нужно смотреть на входные данные — аккуратность с символами в названиях важна;
  • * моя частая ошибка — 422 Unprocessable Entity — при разборе оказалось, что пароль был слишком простой;
 Нет комментариев   4 мес   api   bash   почта   скрипт   Яндекс

Памятка по настройкам почты

Я просто оставлю здесь эту памятку для самопроверки по настройке почты:

  • 0. Корректная MX запись на ваш почтовый сервер.
  • 1. В конфигурации по доменам (/home/login/conf/web/apache2.conf или /home/login/conf/web/httpd.conf — внутри Directory) сделать корректную отправку с обратным адресом (желательно, чтобы этот адрес существовал):
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@domain.ru"
  • 2. Корректный PTR для вашего сервера (оно же обратная зона, обычно делается вашим провайдером)
  • 3. Корректный SFP (ip в качестве примера)
v=spf1 a mx ip4:192.168.0.1 ~all
  • 4. Если не используется IPv6, то разумнее его отключить. Одна строка в exim. (Если используется, то не забыть п.3 и п.2 для IPV6 адресов.)
disable_ipv6 = true
  • 5. Использовать корректный хостнейм, который резолвится (отзывается хоть как-нибудь), а также не забыть использовать резолвер для внешних ресурсов. Примеры:
    /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.0.1 domain.ru        domain
  • /etc/resolv.conf
nameserver 77.88.8.8
nameserver 8.8.8.8
nameserver 77.88.8.1
nameserver 8.8.4.4

====================================

Проверьте, не в спамлистах ли вы:

Заботливый робот

Не смотря на то, что логотип робота нарисован на основе творения СоюзМультФильма, подобная забота приятна. Еще было бы очень в тему, предупредить перед отключением, а то логика как-то слегка теряется.