READERS.CONF(5) InterNetNews Documentation READERS.CONF(5) (NAME) readers.conf - nnrpd (IN A NUTSHELL) readers.conf . readers.conf (authentication) (authorization) . ( "auth"). ( "access"). "auth" : auth "foreignokay" { auth: "ckpasswd -f /newsusers" default: "" } newsusers -f ckpasswd(8) . "foreignokay" "myusername" "myusername" . "" "access" . readers.conf ( ) . . "access" : access "authenticatedpeople" { users: "*" newsgroups: "*,!junk,!control,!control.*" } : access "restrictive" { users: "" newsgroups: "!*" } access "readonly" { users: "" read: "local.*" post: "!*" } "authenticatedpeople" "restrictive" "readonly" readers.conf readers.conf ( ) . . "authenticatedpeople" "" . ( PAM Perl Python). readers.conf nnrpd . "inncheck" readers.conf . (DESCRIPTION) readers.conf pathetc nnrpd(8) . . nnrpd -D . ( readers.conf pathetc "nnrpd -c" .) readers.conf : / . ("#") "#" "\" . . / . ( ) "#" . : hosts: *.example.com : hosts: "*.example.com, *.example.net" : hosts: *.example.com,*.example.net . . (boolean) . "true" "yes" "on" "false" "no" "off" . . : auth access. auth ( ) . access . readers.conf : auth access. auth access ( key) auth access . auth ( "@") "" . nnrpdauthsender inn.conf Sender . inn.conf(5) . auth : auth { hosts: auth: res: default: default-domain: # ...possibly other settings } . ( syslog "news.debug" nnrpd . .) auth IP (wildmat) hosts ( "@" ). CIDR IP "10.10.10.0/24" IP 10.10.10.0 10.10.10.255 . TLS/SSL SASL auth require_encryption true -S nnrpd STARTTLS SASL . ( res ) . (resolvers) res "@" default default-domain . . AUTHINFO USER/PASS ( auth perl_auth python_auth ). . ckpasswd PAM . ckpasswd(8) . auth auth / . access : access { users: newsgroups: # ...possibly other settings } . ( "@" ). : access { users: read: post: } . access inn.conf(5) (override) . auth access . : auth perl_access python_access access . access . . auth access users access users . key . : auth example { key: special hosts: *.example.com default: } access example { key: special users: newsgroups: * addcanlockuser: none } key auth access . "*.example.com" ( auth ) "key: special" . access auth "key: special" . . default- domain "" . INN ( ) . "" Cancel-Lock . : include . (top-level) . auth access . (AUTH GROUP PARAMETERS) auth res auth perl_auth python_auth default ( ). auth ( ). pathbin/auth/passwd . AUTHINFO USER/PASS . res auth auth . perl_auth . ckpasswd(8) . default auth. res . default-domain ( ) "@" "@" . default-domain auth. "@" . ( .) hosts IP IP CIDR. auth . ( ) hosts . auth auth hosts . . key auth access key . localaddress hosts . auth . ( .) . perl_access Perl access. auth perl_access access . access readers.conf . auth perl_access access readers.conf . INN Perl ( --with-perl "configure"). doc/hook-perl . perl_auth Perl . perl_auth auth Perl . / auth perl_auth python_auth auth . perl_auth auth . INN Perl (--with-perl "configure" ). doc/hook-perl . python_access Python access. auth python_access ( ".py" ) pathfilter access . access readers.conf . auth python_access access readers.conf . INN Python ( --with-python "configure"). doc/hook-python . python_auth Python . python_auth auth ( ".py" ) pathfilter Python . auth perl_auth python_auth auth . python_auth auth . INN Python ( --with-python "configure"). doc/hook-python . python_dynamic Python . auth python_dynamic ( ".py" ) pathfilter . python_dynamic newsgroups read post . INN Python ( --with-python "configure"). doc/hook-python . require_encryption true auth -S nnrpd STARTTLS SASL . INN TLS/SSL SASL ( SSL crypto OpenSSL Cyrus SASL --with-openssl --with-sasl "configure" ). res ( ). pathbin/auth/resolv . (resolver) ( ). ident . auth res . . res res . res : log pathlog/news.notice ( "res also-log:") . res log . program res . res auth . auth { res: } : auth { res { program: } } (ACCESS GROUP PARAMETERS) access . : A Approved ( ). . I IHAVE . IHAVE POST ( "P") . IHAVE POST ( Injection-Info ). L ( "j" "n" "x" active(5)). N NEWNEWS . P (post) . R (read) . allownewnews inn.conf access NEWNEWS "N" access . NEWNEWS "N" access . "R" access newsgroups read . "P" . access access "R" "P" access newsgroups read post . ( read post .) addcanlockuser "none" Cancel-Lock ( ). Cancel-Key (cancel) (supersede) . "username" . "ip" IP ( IP ). inn-secrets.conf(5) . IP access IP . domain ( "@") Message-ID Injection-Info . inn.conf . domain readers.conf virtualhost true . fromhost ( inn.conf) Injection-Info complaints newsmaster "@" . groupexactcount nnrpd . expirover ( news.daily ) - CNFS . groupexactcount nnrpd . groupexactcount "0" nnrpd . "1" . "0" "1" ( ). ( ). "5" . key access auth key . localtime Date Injection-Date nnrpd (UTC) . true Date . ( Injection-Date addinjectiondate inn.conf UTC .) false . . ( ) . max_rate ( ) nnrpd . ( ) . . newsgroups access . "newsgroups: *" ( read / post ). newsmaster nnrpd(8) virtualhost: true . perlfilter false Perl . true . post newsgroups . read ( ). newsgroups access . pythonfilter false Python . true . Python nnrpd . Python innd . read newsgroups . post newsgroups access . ( read post .) reject_with "Permission denied" ( ) . . strippath true Path Path . false . users access . access ( "users: *" ). virtualhost true nnrpd . domain inn.conf access . Xref (overview) domain Message-ID Injection-Info . ( -I nnrpd Message-ID -I .) Path domain ( pathhost access inn.conf ) pathhost ( pathhost access inn.conf ). ( "@") newsmaster nnrpd newsmaster domain . domain pathhost access inn.conf nnrpd . . access inn.conf . inn.conf(5) : addinjectiondate, addinjectionpostingaccount, addinjectionpostinghost, backoff_auth, backoff_db, backoff_k, backoff_postfast, backoff_postslow, backoff_trigger, checkincludedtext, clienttimeout, complaints, fromhost, localmaxartsize, moderatormailer, nnrpdauthsender, nnrpdcheckart, nnrpdoverstats, nnrpdposthost, nnrpdpostport, organization, pathhost, readertrack, spoolfirst, strippostcc. (SUMMARY) : o auth ( hosts localaddress require_encryption ) . o auth . res default . auth ( ) auth . o auth ( default res ) auth auth ( ) auth ( access ) . ( ) . o auth auth perl_auth python_auth . auth auth perl_auth python_auth . auth ( ) auth . o auth res auth perl_auth python_auth ( default) default-domain . ( perl_access python_access .) o access access . ( auth perl_access python_access access .) access . (EXAMPLES) readers.conf "example.com" (Bob) : auth example.com { hosts: "*.example.com, example.com, !bob.example.com" default: "" } access full { users: "" newsgroups: * addcanlockuser: none } users ( "" ). users . auth "example.com" . auth access : auth lab { hosts: "*.lab.example.com" default: } access lab { users: read: * } lab.example.com ( ) . . PAM : auth all { auth: "ckpasswd -f /newsusers" auth: ckpasswd } access full { users: * newsgroups: * } res ( "users: *") . " " nnrpd . ckpasswd -f PAM ( INN PAM) ( getpwnam(3) ). ( ) access . . auth "hosts: example.com" / "auth: ckpasswd" . access newsgroups access users "users: " . : . auth "example.com" { hosts: "*.example.com" auth: "ckpasswd -f /newsusers" default: "anonymous" } access regular { newsgroups: "*,!example.restricted.*" addcanlockuser: none } access full { users: "*,!anonymous" newsgroups: * } "anonymous" access "example.restricted.*" . Cancel-Lock . newsusers . example.com . . "example.*" (shell) identd(8) . Dialup RADIUS . . ( "joe" "jane") ( "example.admin.*" ) Perl . dialup Sender . (moderated) Approved . auth default { auth: "ckpasswd -f /newsusers" default: default-domain: example.com } auth shell { hosts: *.shell.example.com res: ident auth: ckpasswd default: default-domain: shell.example.com } auth dialup { hosts: *.dialup.example.com auth: radius default: default-domain: dialup.example.com } access shell { users: *@shell.example.com read: * post: "*, !example.admin.*" } access dialup { users: *@dialup.example.com newsgroups: *,!example.* nnrpdauthsender: true } access other { users: "*@example.com, !@example.com" newsgroups: *,!example.* } access fail { users: "@*" newsgroups: !* } access admin { users: "joe@*,jane@*" newsgroups: * access: "RPA" perlfilter: false } dialup shell . key . fail shell dialup . dialup RADIUS dialup fail ( "@dialup.example.com" ) fail . auth shell auth "joe" "jane" shell ( ident ). . "joe" "jane" ( dialup shell ) . . auth default { hosts: * default: } access default { users: newsgroups: example.* addcanlockuser: none } . Perl Python (crosspost) Supersedes . . / Perl Python / . ( ) SQLite nnrpd_auth.pl nnrpd_auth.py / nnrpd_access.pl nnrpd_access.py . readers.conf : auth checkcredentials { perl_auth: "/path/to/script/nnrpd_auth.pl" perl_access: "/path/to/script/nnrpd_access.pl" } : auth checkcredentials { python_auth: "nnrpd_auth" python_access: "nnrpd_access" } . readers.conf (flat file) . (SECURITY CONSIDERATIONS) NNTP NNTP ( ) . . AUTHINFO USER/PASS . ( "auth: ckpasswd -s") . NNTP TLS/SSL ssh auth . SASL . : o NNTP ( ) ( ) auth require_encryption . STARTTLS TLS . AUTHINFO SASL . o ( ) auth hosts . o nnrpd -S ( -D inetd) NNTPS ( ) TLS/SSL . nnrpd(8) . require_encryption -c readers.conf . o auth (loopback) ( localhost ssh ) localaddress . (HISTORY) Aidan Cully InterNetNews. Russ Allbery . (SEE ALSO) auth_krb5(8), ckpasswd(8), inn.conf(5), innd(8), inn-secrets.conf(5), libinn_uwildmat(3), newsfeeds(5), nnrpd(8). INN 2.7.4 2025-03-29 READERS.CONF(5)