Pałerjuser

Posted on Sun 19 April 2020 in hack • 3 min read

NNTP odeszło chyba w niebyt. Piszę "chyba" bo nie sprawdzałem ale czuję, że nikt już prawie nie "siedzi" na grupach newsowych. Przeżyły swój rozkwit na przełomie wieków XX i XXI, po czym oddały pola twitterom, FB czy redditowi.

Pewnie jestem jednym z niewielu, którzy wciąż sięgają po takie narzędzia jak czytnik newsów. W moim przypadku jest nim SLRN - stara, dobra, kobyła na każdy system operacyjny.

SLRN obłsuguje makra w S-Langu i dzięki temu jest mi przydatny każdego ranka gdy chcę popchnąć do przodu pewien tajny projekt.

Chodzi o to, że za pomocą naprawdę prostego "myku" sortuję sobie newsy, wysyłając je do lokalnej skrzynki pocztowej. Idzie to tak:

W głównym pliku ustawień SLRN-a, czyli .slrnrc, mam linię wskazującą na makro forward.sl:

interpret    /Users/paczor/slrn/slrn-plugins/forward.sl

Makro forward.sl wygląda tak:

% Makro pajpuje aktywny post na zdefiniowany adres
define Mforward_post () {
    variable mSubject;
    variable mRazem;
    variable mDzial = select_list_box (
        "Wybierz dzial",
        "BOFH",                          % 1
        "Gry",                            % 2
        "Ponadczasowe",          % 3
        "Sex",                            % 4
        "Socjologia",              % 5
        "Technologia",            % 6
        "Windows",                    % 7
        "Lingwistyka",            % 8
        "Newsy",                        % 9
        "Misc",                          % 10
        "Slang",                        % 11
        "Jedzenie",                  % 12
        "Pojazdy",                    % 13
        "Sygnaturki",              % 14
        "Cancel",                      % 15
        15,1
        );
    if (mDzial == "Cancel") {
    } else {
            mSubject = extract_article_header ("Subject");
            mRazem = strcat(string(mDzial),"|",string(mSubject));
            variable cmd = strcat("mailx -n -s \"", mRazem, "\" paczor@localhost");
    %      popup_window("cmd", string(cmd));
            pipe_article(cmd);
    }
}
definekey ("Mforward_post", "F", "article”);
Po naciśnieciu w SLRN-ie Shift+F pojawia się okno z wyborem działu książki (zmienna mDzial). Wybór jest dodawany do zmiennej mRazem, a na koniec odpala się mailx i wysyła podświetlony post na mój lokalny adres. Tak to wygląda w SLRN-ie:
Na macOS-ie w /etc/postfix/main.cf zmieniona jest linia:
home_mailbox = Maildir/
Potem restart Postfixa:
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.postfix.master.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.postfix.master.plist
Instaluję lokalnie Dovecota:
brew install dovecot
Kopiuję jego domyślne ustawienia:
cp -pr /usr/local/Cellar/dovecot/2.x.x.x/share/doc/dovecot/example-config/ /usr/local/etc/dovecot/

I zmieniam na następujące:

listen = 127.0.0.1
protocols = imap
passdb {
    driver = static
    args = password=dupa01
}
userdb {
    driver = passwd-file
    args = username_format=%u /usr/local/etc/dovecot/users
}
mail_location = maildir:~/Maildir
mail_uid = paczor
mail_gid = staff
ssl = no
default_login_user = _dovenull
default_internal_user = _dovecot
default_internal_group = mail
default_process_limit = 10
default_client_limit = 50

(Jak widać powyżej użytkownik jest jeden i ma ustawione głupie hasło).

Tworzę plik: /usr/local/etc/dovecot/users, a w nim:
paczor:x:501:20:Pawel Kaczor:/Users/paczor
W pliku /usr/local/etc/dovecot/conf.d/10-auth.conf zakomentowuję linię:
#!include auth-system.conf.ext
W pliku /usr/local/etc/dovecot/conf.d/10-ssl.conf zakomentowuję linię:
#ssl_cert = </etc/ssl/certs/dovecot.pem#ssl_key = </etc/ssl/private/dovecot.pem
Restartuję Dovecota:
sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.dovecot.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dovecot.plist
Sprawdzam czy Dovecot się odzywa:
telnet localhost imap
i po pojawieniu się promptu wpisuję:
a1 LOGIN paczor dupa01
W razie kłopotów trzeba ustawić debugowanie w /usr/local/etc/dovecot/conf.d/10-logging.conf.
I zajrzeć do: /usr/local/var/log/dovecot/dovecot-debug.log/usr/local/var/log/dovecot/dovecot.log
Konfiguracja Thunderbirda:
server IMAP: localhost
port: 143
user: paczor
hasło: bez szyfrowania i otwartym tekstem

I na koniec filtry w Thunderbirdzie wrzucające poszczególne posty z SLRN-a do odpowiednich folderów.

Tyle!

Odpalam SLRN-a i Thunderbirda, w czytniku wysyłam sobie wybrane posty poprzez naciśnięcie Shift+F (od: Forward), z menu wybieram odpowiedni folder. mailx przesyła post do lokalnej skrzynki, a Thunderbird filtruje ją do wybranego wcześniej folderu.

Szybko i sprawnie. Na początku włożyłem w to nieco pracy ale na koniec mam wygodny interfejs i pracuje mi się w nim bardzo sprawnie. Howgh!

p.s. W Linuksie prawie wszystko jest identycznie.

p.p.s Pomyślałem sobie, że S-Langowe makro mogłoby od razu pajpować posty do odpowiednich skrzynek ale rozbudowa makra i testy zajęłyby zbyt wiele czasu w stosunku do ważności samego zadania.