mirror of
https://gitverse.ru/kpa39l/email-local-archive.git
synced 2026-09-29 09:15:11 +00:00
124 lines
4.2 KiB
Markdown
124 lines
4.2 KiB
Markdown
# Jino (jino.ru) — настройка почтового ящика в Himalaya
|
||
|
||
## Серверы
|
||
|
||
| Протокол | Сервер | Порт | Шифрование | Аутентификация |
|
||
|----------|--------|------|------------|----------------|
|
||
| IMAP | mail.jino.ru | 143 | STARTTLS | PLAIN, CRAM-MD5 |
|
||
| IMAP SSL | mail.jino.ru | 993 | TLS | PLAIN, CRAM-MD5 |
|
||
| POP3 SSL | mail.jino.ru | 995 | TLS | USER/PASS |
|
||
| SMTP | smtp.jino.ru | 587 | STARTTLS | PLAIN, LOGIN, CRAM-MD5 |
|
||
| SMTP SSL | smtp.jino.ru | 465 | TLS | PLAIN, LOGIN, CRAM-MD5 |
|
||
|
||
**Логин:** полный email `hermes@nixg.ru` (не local-part без домена — сервер вернёт "Email not valid").
|
||
|
||
## Himalaya config
|
||
|
||
```toml
|
||
[accounts.jino-hermes]
|
||
email = "hermes@nixg.ru"
|
||
display-name = "Hermes Agent"
|
||
default = false
|
||
|
||
backend.type = "imap"
|
||
backend.host = "mail.jino.ru"
|
||
backend.port = 993
|
||
backend.encryption.type = "tls"
|
||
backend.login = "hermes@nixg.ru"
|
||
backend.auth.type = "password"
|
||
backend.auth.raw = "PASSWORD_HERE"
|
||
|
||
folder.aliases.inbox = "INBOX"
|
||
|
||
[accounts.jino-hermes.message.send]
|
||
backend.type = "smtp"
|
||
backend.host = "smtp.jino.ru"
|
||
backend.port = 465
|
||
backend.encryption.type = "tls"
|
||
backend.login = "hermes@nixg.ru"
|
||
backend.auth.type = "password"
|
||
backend.auth.raw = "PASSWORD_HERE"
|
||
```
|
||
|
||
## Диагностика
|
||
|
||
### Быстрая проверка IMAP (Python)
|
||
|
||
```python
|
||
import imaplib
|
||
M = imaplib.IMAP4_SSL('mail.jino.ru', 993)
|
||
try:
|
||
M.login('hermes@nixg.ru', 'PASSWORD')
|
||
print('OK')
|
||
M.logout()
|
||
except Exception as e:
|
||
print(f'Login failed: {e}')
|
||
```
|
||
|
||
### Быстрая проверка SMTP (Python)
|
||
|
||
```python
|
||
import smtplib
|
||
S = smtplib.SMTP('smtp.jino.ru', 587, timeout=15)
|
||
S.ehlo()
|
||
S.starttls()
|
||
S.ehlo()
|
||
try:
|
||
S.login('hermes@nixg.ru', 'PASSWORD')
|
||
print('SMTP OK')
|
||
except Exception as e:
|
||
print(f'SMTP login error: {e}')
|
||
S.quit()
|
||
```
|
||
|
||
### Проверка POP3
|
||
|
||
```python
|
||
import poplib
|
||
P = poplib.POP3_SSL('mail.jino.ru', 995, timeout=15)
|
||
try:
|
||
P.user('hermes@nixg.ru')
|
||
P.pass_('PASSWORD')
|
||
msgs, _ = P.stat()
|
||
print(f'POP3 OK, {msgs} messages')
|
||
P.quit()
|
||
except Exception as e:
|
||
print(f'POP3 error: {e}')
|
||
```
|
||
|
||
### Просмотр IMAP-возможностей сервера
|
||
|
||
```python
|
||
M = imaplib.IMAP4_SSL('mail.jino.ru', 993)
|
||
M.capability()
|
||
print(M.capabilities) # выведет: IMAP4 IMAP4REV1 UIDPLUS CHILDREN NAMESPACE QUOTA IDLE AUTH=PLAIN AUTH=CRAM-MD5
|
||
M.shutdown()
|
||
```
|
||
|
||
## Типовые проблемы
|
||
|
||
### "Login failed" на всех протоколах
|
||
|
||
1. **Ящик не активирован** — Jino (и особенно хостинг-аккаунты на nixg.ru) могут требовать первый вход через панель управления или webmail
|
||
2. **Неправильный пароль** — сбросить в cp.jino.ru → Почта → нужный ящик → Изменить пароль
|
||
3. **Доступ по протоколам отключён** — в панели Jino нужно проверить, что IMAP/POP3/SMTP включены для ящика
|
||
4. **Сервер ждёт активации** — на новых доменах почта может не работать до завершения регистрации/верификации
|
||
|
||
Если логин не проходит через `himalaya` — **проверить вручную через Python** (см. выше). Python показывает ту же ошибку, но без дополнительных слоёв (Rust-клиент himalaya может добавить свою обёртку).
|
||
|
||
### "Email not valid"
|
||
|
||
Логин передан без доменной части (только `hermes`, а не `hermes@nixg.ru`). Jino IMAP требует полный email.
|
||
|
||
## Множественные аккаунты в Himalaya
|
||
|
||
Конфиг может содержать сколько угодно аккаунтов. Для переключения:
|
||
|
||
```bash
|
||
# Через --account (порядок аргументов важен):
|
||
himalaya --account hermes envelope list --limit 10
|
||
|
||
# Или временно сделать default и вернуть обратно:
|
||
vim ~/.config/himalaya/config.toml
|
||
# выставить default = true у нужного аккаунта
|
||
``` |