Команды IMAP в Linux

Команды IMAP в Linux

    IMAP

    Internet Mail Access Protocol (IMAP) в отличии от POP3 забирает все письма на локальный компьютер, а хранит их на сервере, поэтому у клиента есть возможность просматривать почту с различных ПК или мобильных устройств
    Для обмена командами клиент устанавливает TCP соединение с сервером, который прослушивает порт 143, 465, 587
    Каждая команда, выдаваемая клиентом, предваряется уникальным идентификатором, например для завершения сеанса связи клиент отправляет следующую команду:
    a001 LOGOUT
    Если бы клиенту потребовалось задавать и другие команды, то следующим идентификатором был бы a002
    После идентификации на сервере клиент может использовать команды IMAP для управления сообщениями на сервере. Протоколом IMAP предусмотрена возможность поддержки пользователем нескольких почтовых ящиков на одном сервере.
    Команда LOGIN позволяет клиенту при регистрации на сервере IMAP использовать логин и пароль в текстовом виде.
    a001 LOGIN mmegatest@yandex.ru tedwqkmee
    Команда AUTHENTICATE это альтернативный вариант авторизации на сервере с возможность указать метод проверки
    a1 AUTHENTICATE KERBEROS_V4
    Если на сервере не поддерживается метод проверки подлинности, предложенный клиентом, он ответит словом NO


    После авторизации, клиент может манипулировать сообщениями на сервере. Сообщения не копируются на локальный компьютер, а копируются только для отображения
    Почтовый ящик для клиента по умолчанию носит название INBOX
    Каждому сообщению назначается уникальный идентификатор (UID), по которому они идентифицируются в почтовом ящике
    Метка UID сохраняется в течение всех сеансов IMAP для того, чтобы клиентское программное обеспечение могло правильно идентифицировать сообщения в почтовом ящике
    Каждому почтовому ящику соответствует уникальный идентификатор достоверности ( UIDVALIDITY )
    Метка UIDVALIDITY должна присутствовать во время всех сеансов IMAP, только в том случае, если идентификаторы сообщений в ящике оставались неизменными
    Если в почтовом ящике имеются сообщения с различными идентификаторами, то значение UIDVALIDITY при следующем сеансе должно увеличиться. Это позволяет клиентам быстро определять, появились ли в почтовом ящике новые сообщения с момента последнего к нему обращения.
    Каждое сообщение снабжается флагом, который отображает его статус. Флаг может быть постоянным или задаваться на время сеанса. Постоянные флаги могут изменяться клиентом и сохраняться вне зависимости от сеансов. Флаги, назначаемые на время сеанса, действительны только на время текущего сеанса IMAP
    Флаги почтового сообщения IMAP:
    \Seen Сообщение прочитано
    \Answered На сообщение послан ответ
    \Flagged Сообщение принудительно отмечено
    \Deleted Сообщение удалено
    \Draft Сообщение не окончено (черновик)
    \Recent Новое сообщение в почтовом ящике
    Почтовому сообщению может соответствовать 0 флагов или несколько флагов. Информация о флагах передается клиенту вместе с самим сообщением. В обязанности клиента входит интерпретация флагов соответствующим образом.
    Команда SELECT используется после авторизации, для выбора почтового ящика, например входящие ( INBOX )
    a003 SELECT INBOX

    a003 SELECT INBOX * FLAGS (\Answered \Seen \Draft \Deleted $Forwarded) * 5 EXISTS * 5 RECENT * OK [UNSEEN 1] * OK [PERMANENTFLAGS (\Answered \Seen \Draft \Flagged \Deleted $Forwarded \*)] Limited * OK [UIDNEXT 40] Ok * OK [UIDVALIDITY 1669753653] Ok a003 OK [READ-WRITE] SELECT Completed.

    UIDNEXT 40 - это следующий доступный UID, который будет использоваться для данного почтового ящика
    FLAGS (\Answered \Seen \Draft \Deleted $Forwarded) - это набор поддерживаемых флагов, в данном случае постоянных
    PERMANENTFLAGS (\Answered \Seen \Draft \Flagged \Deleted $Forwarded \* - это набор поддерживаемых флагов, в данном случае действительных только на время сеанса
    Клиент может изменять значение этих флагов для каждого сообщения
    UNSEEN 1 - значит одно сообщение находится в ящике с флагом "не прочитано"
    READ-WRITE - права пользователя для почтового ящика клиента


    Команда EXAMINE читает содержимое почтового ящика
    Пока почтовый ящик открыт, с помощью EXAMINE нельзя выполнять никакие действия. Таким образом, в этом режиме исключена возможность добавления или удаления флагов сообщений
    Команда CREATE используется для создания нового почтового ящика на сервере IMAP
    Команда DELETE применяется к почтовым ящикам, а не к сообщениям
    В следующем примере создается пользовательская папка test на сервер imap.yandex.ru и тут же удаляется

    a004 CREATE test a004 OK CREATE Completed. a005 DELETE test a005 OK DELETE Completed.

    С помощью команды RENAME клиент может изменить имя почтового ящика


    Команда SUBSCRIBE используется для добавления почтового ящика в список активных ящиков клиента
    Команда UNSUBSCRIBE используется для удаления активных ящиков клиента
    Команда LIST используется для получения списка всех почтовых ящиков клиента
    a007 list "" "*"
    "" - каталог где находятся все ящики клиента ( корневой ), "*" - имя почтового ящика, в данном случае любое имя
    a008 LSUB "" "*" работает подобно команде LIST но используется в других случаях, подробнее в здесь
    Команда STATUS используется для формирования запроса о текущем состоянии почтового ящика
    Первым параметром для этой команды является имя почтового ящика, к которому она применяется. Второй параметр — это список пунктов, по которым клиент может получить информацию (она заключается в круглые скобки () ). Команда STATUS может использоваться отдельно для получения информации о состоянии почтового ящика без его открытия с помощью команд SELECT или EXAMINE
    Список критериев
    MESSAGES Общее число сообщений в почтовом ящике
    RECENT Число сообщений в ящике с флагом \RECENT (новые)
    UIDNEXT Следующий доступный идентификатор UID, который будет назначен новому сообщению
    UIDVALIDITY Уникальный идентификатор UID почтового ящика
    UNSEEN Число сообщений в почтовом ящике без флага \SEEN

    a009 STATUS INBOX (messages recent unseen) * STATUS INBOX (MESSAGES 5 RECENT 5 UNSEEN 5) a009 OK STATUS Completed.

    С помощью команды APPEND появляется возможность посылать сообщения в почтовый ящик, добавляя сообщение к концу файла почтового ящика.
    APPEND mailbox [(flags)] [date/time string] {message size} message
    Весьма сомнительный способ, для этого есть SMTP


    Команда CHECK используется для установки контрольной точки в почтовом ящике.
    Команда EXPUNGE используется для удаления из почтового ящика всех сообщений, помеченных флагом \DELETED

    a016 store 1 +flags \DELETED * 1 FETCH (UID 35 FLAGS (\Deleted)) a016 OK store Completed. a017 store 2 +flags \DELETED * 2 FETCH (UID 36 FLAGS (\Deleted)) a017 OK store Completed. a018 status INBOX (messages unseen) * STATUS INBOX (MESSAGES 3 UNSEEN 3) * 1 EXPUNGE * 6 EXPUNGE * 3 RECENT a018 OK status Completed. a019 EXPUNGE a019 OK EXPUNGE Completed.

    Команда SEARCH выполняет поиск сообщений по критериям и возвращет его номер
    SEARCH [CHARSET specification] (search criteria)
    Здесь CHARSET specification состоит из служебного слова CHARSET, за которым следует обозначение набора символов. Набор символов по умолчанию — ASCII, так что, как правило, этот параметр опускается. Параметр search criteria определяет ключевые критерии поиска и их значения. Критерии поиска здесь

    a020 search header subject mmegatest * SEARCH 1 2 3 a020 OK search Completed.

    Команда FETCH используется для получения текста почтового сообщения.
    FETCH
    Здесь — диапазон номеров сообщений, которые требуется получить, а соответствуют описанию данных каждого сообщения.
    Имена типов данных являются сложной спецификацией частей сообщения, которые могут возвращаться индивидуально. Существует три макроса возврата информации из сообщения: ALL, BODY и BODY [section]
    ALL не означает, что сообщение будет возвращено целиком
    Данные типа BODY также не означают, что возвращается именно тело сообщения, хотя при этом выделяется тип текстовой части сообщения и размер тела сообщения. При этом программа-клиент IMAP может предоставить пользователю более детальную информацию о сообщении на основе анализа этого типа данных
    Макрос BODY [section] может применяться для возврата отдельных частей сообщения
    FETCH 1 BODY [TEXT] <0.10>

    a022 FETCH 2 BODY * 2 FETCH (BODY ("text" "html" ("charset" "utf-8") NIL NIL "base64" 28632 368)) a022 OK FETCH Completed.

    Команда STORE применяется для изменения информации о сообщении, подробнее здесь
    Команда COPY используется для копирования сообщений из одного почтового ящика в другой
    COPY
    Здесь задает диапазон номеров сообщений, которые нужно скопировать из активного почтового ящика, а указывает имя ящика, в который их нужно скопировать.


    Команда UID используется в связке с командами FETCH, COPY, STORE или SEARCH
    Команда NOOP может применяться для поддержки активности во время сеанса для того, чтобы сеанс не прекратился по таймеру интервала ожидания
    С помощью команды CAPABILITY клиент может запрашивать у сервера IMAP информацию о его возможностях

    a023 CAPABILITY * CAPABILITY IMAP4rev1 CHILDREN UNSELECT LITERAL+ NAMESPACE XLIST BINARY UIDPLUS ENABLE ID IDLE MOVE a023 OK CAPABILITY Completed.
    Подключение с помощью openssl

    Далеко не все почтовые сервера позволяют использовать незащищенное соединение с клиентом, в таком случае можно использовать возможности программы openssl
    После установления соединения с сервером используются стандартные команды imap

    #Подключение к imap серверу yandex openssl s_client -connect imap.yandex.ru:993 -crlf
    Источники
    Последнее изменение: 10.10.2024 04:38


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ