.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "INND 8" .TH INND 8 2025-03-29 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" innd \- دیمن سامانه اخبار InterNetNews .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBinnd\fR [\fB\-adfNrsSu\fR] [\fB\-4\fR \fIaddress\fR] [\fB\-6\fR \fIaddress\fR] [\fB\-c\fR \fIdays\fR] [\fB\-H\fR \fIcount\fR] [\fB\-i\fR \fIcount\fR] [\fB\-l\fR \fIsize\fR] [\fB\-m\fR \fImode\fR] [\fB\-n\fR \fIflag\fR] [\fB\-o\fR \fIcount\fR] [\fB\-P\fR \fIport\fR] [\fB\-t\fR \fItimeout\fR] [\fB\-T\fR \fIcount\fR] [\fB\-X\fR \fIseconds\fR] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" برنامه \&\fBinnd\fR، دیمن سامانه اخبار InterNetNews، تمامی فیدهای ورودی NNTP را مدیریت می‌کند، ذخیره‌سازی، ارسال مجدد و تولید نمای کلی (overview) را برای همه مقالات پذیرفته‌شده هماهنگ می‌سازد، و پایگاه‌های داده active(5) و history(5) را اداره می‌کند. این برنامه به اتصال‌های ورودی روی درگاه NNTP رسیدگی می‌کند و همچنین یک سوکت محلی استریم در دامنه یونیکس ایجاد کرده و به آن گوش می‌دهد تا مقالات را از فرآیندهای محلی مانند nnrpd(8) و rnews(1) دریافت کند. .PP به‌عنوان دیمن اصلی، \&\fBinnd\fR عموماً باید هنگام راه‌اندازی سیستم شروع به کار کرده و همیشه در حال اجرا باشد. این دیمن به یک سوکت دیتاگرام دامنه یونیکس برای دریافت دستورهای کنترلی گوش می‌دهد؛ دستورهایی که می‌توان با استفاده از ctlinnd(8) آن‌ها را ارسال کرد. وضعیت کنونی \&\fBinnd\fR را می‌توان با اجرای دستور \&\f(CW\*(C`ctlinnd mode\*(C'\fR یا برای خروجی دقیق‌تر با اجرای innstat(8) به دست آورد. .PP برنامه \&\fBinnd\fR می‌تواند در یکی از سه حالت کاری باشد: در حال اجرا (running)، متوقف‌شده (paused) یا محدودشده (throttled). حالت عادی، در حال اجرا است؛ هنگامی که سرور محدود شده باشد، اتصال‌ها را می‌بندد و اتصال‌های جدید را رد می‌کند. حالت متوقف‌شده مانند یک محدودسازی موقت است که فعالیت‌های \&\fBinnd\fR را به حالت تعلیق درمی‌آورد، اما اتصال‌های موجود سرور را قطع نمی‌کند. این حالت معمولاً از طریق ctlinnd(8) تغییر داده می‌شود، خواه توسط فرآیندهای خودکار گوناگون (مانند انقضای شبانه مقالات) و خواه به‌صورت دستی توسط مدیر اخبار؛ اما \&\fBinnd\fR همچنین در صورت مواجهه با خطاهای ENOSPC در نوشتن داده‌ها یا تعداد بیش از حد خطاهای ورودی/خروجی (در میان سایر مشکلات)، خودبه‌خود به حالت محدودشده تغییر وضعیت می‌دهد. .PP برنامه \&\fBinnd\fR به‌طور معمول وظیفه اجرای nnrpd(8) را برای مدیریت اتصال‌های کارخواه‌های خواننده اخبار بر عهده دارد، اما می‌تواند روی درگاهی جداگانه از nnrpd(8) نیز اجرا شود تا اتصال‌های فید و اتصال‌های خواندن اخبار به‌صورت جداگانه مدیریت شوند (این روش اغلب می‌تواند سریع‌تر باشد). به‌طور معمول، \&\fBinnd\fR به درگاه ۱۱۹ که درگاه اختصاصی NNTP است گوش می‌دهد؛ چنانچه اجرای \&\fBinnd\fR و nnrpd(8) روی درگاه‌های جداگانه مطلوب باشد، توصیه می‌شود به nnrpd(8) درگاه ۱۱۹ اختصاص داده شود (زیرا بسیاری از کارخواه‌های خواننده اخبار تنها به این درگاه متصل می‌شوند) و درگاه ۴۳۳ برای \&\fBinnd\fR به کار رود. .PP فایل‌های پیکربندی اصلی که فعالیت‌های \&\fBinnd\fR را کنترل می‌کنند عبارتند از: \&\fIincoming.conf\fR که پایگاه‌های دوردستی را که \&\fBinnd\fR اتصال آن‌ها را می‌پذیرد مشخص می‌کند؛ \&\fInewsfeeds\fR که مشخص می‌کند علاوه بر ذخیره‌سازی، چه اقدامی باید روی مقالات ورودی انجام شود؛ و \&\fIinn.conf\fR که طیف گسترده‌ای از پارامترهای پیکربندی را تعیین می‌کند. برخی از پارامترها در inn.conf(5) را می‌توان با فلگ‌های خط فرمان نیز تعیین کرد؛ برای این موارد، فلگ‌های خط فرمان در صورت استفاده اولویت خواهند داشت. .PP برنامه \&\fBinnd\fR باید با کاربر news و گروه news اجرا شود. این برنامه در هنگام شروع به کار این موضوع را بررسی کرده و در صورت عدم اجرای صحیح، متوقف می‌شود. این دیمن به‌طور معمول باید از طریق rc.news(8) به‌عنوان بخشی از فرآیند بوت سیستم راه‌اندازی شود. همچنین برای گوش دادن به درگاه‌های ممتاز (۱۱۹، ۴۳۳ یا ۵۶۳) به برنامه کمکی innbind(8) با دسترسی setuid root متکی است. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" برای گزینه‌های زیر که تنظیمات \&\fIinn.conf\fR را لغو می‌کنند، در صورتی که نه تنظیم \&\fIinn.conf\fR و نه گزینه خط فرمان مشخص نشده باشند، مقادیر پیش‌فرض را در inn.conf(5) مشاهده کنید. .IP "\fB\-4\fR \fIaddress\fR" 4 .IX Item "-4 address" به‌طور معمول، \&\fBinnd\fR به تمام نشانی‌های IP محلی متصل می‌شود (مگر اینکه \&\fIbindaddress\fR در \&\fIinn.conf\fR تنظیم شده باشد). اگر این گزینه مشخص شود، نشانی IP مورد نظر برای اتصال INN را تعیین می‌کند. این ویژگی تنها برای سرورهایی که دارای چندین نشانی IP محلی هستند کاربرد دارد. نشانی IP باید در قالب چهاربخشی نقطه‌دار (\f(CW\*(C`nnn.nnn.nnn.nnn\*(C'\fR) باشد. .Sp مشخص کردن این گزینه معادل تنظیم \&\fIbindaddress\fR در \&\fIinn.conf\fR است و ممکن است بر اتصال INN به یک نشانی IPv6 نیز تأثیر بگذارد. برای جزئیات بیشتر به inn.conf(5) و همچنین فلگ \&\fB\-6\fR برای \&\fBinnd\fR مراجعه کنید. .Sp این گزینه هنگام استفاده از فعال‌سازی سوکت توسط systemd هیچ اثری ندارد. .IP "\fB\-6\fR \fIaddress\fR" 4 .IX Item "-6 address" تنها هنگامی اعمال می‌شود که INN با پشتیبانی از IPv6 ساخته شده باشد. به‌طور معمول \&\fBinnd\fR به تمام نشانی‌های IP محلی متصل می‌شود (مگر اینکه \&\fIbindaddress6\fR در \&\fIinn.conf\fR تنظیم شده باشد). اگر این گزینه داده شود، نشانی IPv6 مورد نظر برای اتصال INN را تعیین می‌کند. نشانی IPv6 باید در قالب تفکیک‌شده با دونقطه بر طبق RFC\ 4291 (\f(CW\*(C`n:n:n:n:n:n:n:n\*(C'\fR) باشد. .Sp مشخص کردن این گزینه معادل تنظیم \&\fIbindaddress6\fR در \&\fIinn.conf\fR است و ممکن است بر اتصال INN به یک نشانی IPv4 نیز تأثیر بگذارد. برای جزئیات بیشتر به inn.conf(5) و همچنین فلگ \&\fB\-4\fR برای \&\fBinnd\fR مراجعه کنید. .Sp این گزینه هنگام استفاده از فعال‌سازی سوکت توسط systemd هیچ اثری ندارد. .IP \fB\-a\fR 4 .IX Item "-a" به‌طور پیش‌فرض، اگر میزبانی به \&\fBinnd\fR متصل شود اما نام آن در \&\fIincoming.conf\fR فهرست نشده باشد، اتصال به \&\fBnnrpd\fR واگذار می‌شود (یا در صورت تنظیم \&\fInoreader\fR در \&\fIinn.conf\fR، رد می‌شود). اگر \&\fB\-a\fR مشخص شود، فایل \&\fIincoming.conf\fR نادیده گرفته شده و هر میزبانی می‌تواند متصل شود و مقالات را انتقال دهد. این فلگ هرگز نباید در سرورهای قابل دسترسی و متصل به یوزنت (Usenet) استفاده شود؛ زیرا سرور را در معرض انواع سوءاستفاده‌ها قرار می‌دهد. .IP "\fB\-c\fR \fIdays\fR" 4 .IX Item "-c days" برنامه \&\fBinnd\fR به‌طور معمول مقالاتی را که قدیمی‌تر (بر حسب روز) از مقدار \&\fIartcutoff\fR در \&\fIinn.conf\fR باشند رد می‌کند. این گزینه در صورت تعیین، مقدار آن تنظیم را لغو می‌کند. اگر \&\fIdays\fR برابر با 0 باشد، این بررسی انجام نمی‌شود و \&\fBinnd\fR مقالات را صرف‌نظر از قدمت آن‌ها می‌پذیرد. .Sp توجه داشته باشید که مقالات ردشده به مدت تعداد روزهای تعیین‌شده در خط \&\f(CW\*(C`/remember/\*(C'\fR در expire.ctl(5) به خاطر سپرده می‌شوند. برای تزریق مجدد مقاله‌ای با همان شناسه پیام (Message-ID) قبلاً ردشده، باید به اندازه آن تعداد روز منتظر بمانید. .Sp چنانچه نیاز به تزریق مجدد مقالات پیش از پایان این بازه زمانی داشته باشید، باید مقدار \&\f(CW\*(C`/remember/\*(C'\fR را در \&\fIexpire.ctl\fR برابر با \&\f(CW\*(C`0\*(C'\fR قرار دهید، فرآیند \&\fBexpire\fR را اجرا کنید (مثلاً از طریق \&\fBnews.daily\fR با همان پارامترهای crontab به همراه \&\f(CW\*(C`notdaily\*(C'\fR) و سپس تغییر اعمال‌شده در \&\fIexpire.ctl\fR را لغو کنید. پس از آن، در صورت ارائه مجدد شناسه پیام، تمامی مقالات ردشده یا حذف‌شده قبلی دیگر تکراری تلقی نخواهند شد. .IP "\fB\-d\fR, \fB\-f\fR" 4 .IX Item "-d, -f" برنامه \&\fBinnd\fR به‌طور معمول خود را به پس‌زمینه می‌برد، خروجی استاندارد و خطای استاندارد را به فایل‌های گزارش هدایت می‌کند و از ترمینال جدا می‌شود. استفاده از \&\fB\-d\fR از تمامی این موارد جلوگیری کرده و باعث می‌شود پیام‌های گزارش در خروجی استاندارد نوشته شوند؛ این قابلیت معمولاً تنها برای اشکال‌زدایی کاربرد دارد. استفاده از \&\fB\-f\fR مانع رفتن به پس‌زمینه و جدا شدن از ترمینال می‌شود اما همچنان خروجی را تغییر مسیر می‌دهد؛ این گزینه زمانی مفید است که بخواهید \&\fBinnd\fR را توسط برنامه‌ای نظارت کنید که با انشعاب‌های فرآیند (forks) دچار سردرگمی می‌شود. .IP "\fB\-H\fR \fIcount\fR, \fB\-T\fR \fIcount\fR, \fB\-X\fR \fIseconds\fR" 4 .IX Item "-H count, -T count, -X seconds" این فلگ‌ها تعداد اتصال‌های مجاز در هر \&\fIseconds\fR ثانیه را کنترل می‌کنند. این بخش از کد با هدف محافظت از سرور شما در برابر کارخواه‌های خواننده خبری طراحی شده است که اتصال‌های بسیار زیادی در هر دقیقه برقرار می‌کنند (بنابراین این فلگ‌ها احتمالاً تنها زمانی مفید خواهند بود که \&\fBinnd\fR در حال راه‌اندازی \&\fBnnrpd\fR باشد). بهتر است از این گزینه‌ها استفاده نکنید مگر اینکه دچار مشکل شده باشید. جدول مورداستفاده برای این بررسی با ظرفیت ۱۲۸ مدخل ثابت بوده و به‌صورت حلقوی استفاده می‌شود؛ این اندازه به این منظور انتخاب شده که محاسبه شاخص آسان باشد و اطمینان حاصل شود که فضا تمام نخواهد شد. در عمل، بعید است که در هر لحظه حتی نیمی از این جدول استفاده شود. .Sp فلگ \&\fB\-H\fR تعداد دفعاتی را که یک میزبان مجاز است در بازه زمانی ارائه‌شده با \&\fB\-X\fR به سرور متصل شود محدود می‌کند. مقدار پیش‌فرض \&\f(CW\*(C`2\*(C'\fR است. .Sp فلگ \&\fB\-T\fR تعداد کل اتصال‌های ورودی در بازه زمانی ارائه‌شده با \&\fB\-X\fR را محدود می‌کند. بیشینه مقدار \&\f(CW\*(C`128\*(C'\fR و مقدار پیش‌فرض \&\f(CW\*(C`60\*(C'\fR است. .Sp توجه داشته باشید که بازه زمانی تعیین‌شده با \&\fB\-X\fR به‌طور پیش‌فرض برابر با \&\f(CW\*(C`0\*(C'\fR تنظیم شده است؛ به این معنی که هیچ کنترلی روی تعداد اتصال‌ها اعمال نمی‌شود. .IP "\fB\-i\fR \fIcount\fR" 4 .IX Item "-i count" برنامه \&\fBinnd\fR به‌طور معمول حداکثر تعداد اتصال‌های هم‌زمان NNTP را مطابق با مقدار \&\fImaxconnections\fR در \&\fIinn.conf\fR مجاز می‌داند. این گزینه در صورت تعیین، مقدار آن تنظیم را لغو می‌کند. اگر \&\fIcount\fR برابر با \&\f(CW\*(C`0\*(C'\fR باشد، این بررسی غیرفعال می‌شود. .IP "\fB\-l\fR \fIsize\fR" 4 .IX Item "-l size" برنامه \&\fBinnd\fR به‌طور معمول هر مقاله‌ای را که بزرگ‌تر از مقدار \&\fImaxartsize\fR در \&\fIinn.conf\fR باشد رد می‌کند. این گزینه در صورت تعیین، مقدار آن تنظیم را لغو کرده و بیشینه اندازه مجاز مقاله را به \&\fIsize\fR تعیین می‌کند. اگر \&\fIsize\fR برابر با \&\f(CW\*(C`0\*(C'\fR باشد، این بررسی غیرفعال می‌شود. .IP "\fB\-m\fR \fImode\fR" 4 .IX Item "-m mode" به‌طور معمول، \&\fBinnd\fR در حالت \&\f(CW\*(C`running\*(C'\fR آغاز به کار می‌کند. اگر این گزینه مشخص شود، تعیین می‌کند که \&\fBinnd\fR باید در چه حالتی شروع به کار کند. مقدار \&\fImode\fR باید با یکی از حروف \&\f(CW\*(C`g\*(C'\fR، \&\f(CW\*(C`p\*(C'\fR یا \&\f(CW\*(C`t\*(C'\fR شروع شود، و حالت شروع بر پایه آن حرف اول به‌ترتیب روی \&\f(CW\*(C`running\*(C'\fR، \&\f(CW\*(C`paused\*(C'\fR یا \&\f(CW\*(C`throttled\*(C'\fR تنظیم خواهد شد. (\f(CW\*(C`g\*(C'\fR مخفف \&\f(CW\*(C`go\*(C'\fR است). .IP \fB\-N\fR 4 .IX Item "-N" در صورت تعیین این گزینه، هر فیلتری (Perl یا Python) پیش از شروع \&\fBinnd\fR غیرفعال می‌شود (به‌طور معمول، فیلترها به‌صورت پیش‌فرض فعال هستند). این فیلترها را می‌توان پس از شروع \&\fBinnd\fR با استفاده از ctlinnd(8) فعال کرد. .IP "\fB\-n\fR \fIflag\fR" 4 .IX Item "-n flag" اینکه آیا \&\fBinnd\fR در زمان توقف یا محدودیت اجازه برقراری اتصال‌های خواننده را می‌دهد (و آن‌ها را به \&\fBnnrpd\fR می‌سپارد) یا خیر، به‌طور معمول بر اساس مقدار \&\fIreaderswhenstopped\fR در \&\fIinn.conf\fR تعیین می‌شود. این گزینه در صورت تعیین، مقدار یادشده را لغو می‌کند. اگر \&\fIflag\fR برابر با \&\f(CW\*(C`n\*(C'\fR باشد، \&\fBinnd\fR در صورت متوقف یا محدود بودن، به خوانندگان اجازه دسترسی نخواهد داد. اگر \&\fIflag\fR برابر با \&\f(CW\*(C`y\*(C'\fR باشد، خوانندگان صرف‌نظر از حالت کاری \&\fBinnd\fR مجاز خواهند بود. .IP "\fB\-o\fR \fIcount\fR" 4 .IX Item "-o count" این فلگ تعداد توصیف‌کننده‌های فایل موجود برای فیدهای فایلی خروجی را محدود می‌کند. مقدار پیش‌فرض برابر با تعداد توصیف‌کننده‌های فایل در دسترس منهای مقداری ذخیره‌شده برای استفاده‌های داخلی است (که در غیر این صورت ممکن است \&\fBinnd\fR را از توصیف‌کننده‌های موردنیاز برای پذیرش اتصال‌های جدید محروم سازد). اگر \&\fBinnd\fR تعداد فیدهای فایلی بیشتری از \&\fIcount\fR داشته باشد، برخی از آن‌ها بافر شده و تنها به‌صورت دوره‌ای نوشته می‌شوند. .Sp به‌طور معمول هرگز نیازی به استفاده از این گزینه ندارید، زیرا تعداد فیدهای خروجی ثابت بوده و همان تعداد فیدهای فایلی پیکربندی‌شده در \&\fInewsfeeds\fR است که معمولاً اندک می‌باشد (به‌ویژه با توجه به اینکه امروزه در پایگاه‌های بزرگ، innfeed(8) برای اکثر فیدهای خروجی به کار می‌رود). .IP "\fB\-P\fR \fIport\fR" 4 .IX Item "-P port" درگاهی که \&\fBinnd\fR باید به آن گوش دهد به‌طور معمول توسط مقدار \&\fIport\fR در \&\fIinn.conf\fR مشخص می‌شود. این گزینه در صورت تعیین، آن مقدار را لغو کرده و درگاهی را که \&\fBinnd\fR باید به آن متصل شود مشخص می‌کند. .IP \fB\-r\fR 4 .IX Item "-r" به \&\fBinnd\fR دستور می‌دهد که پس از شروع، فایل \&\fIactive\fR را دوباره شماره‌گذاری کند، درست مانند اینکه دستور \&\f(CW\*(C`ctlinnd renumber\*(C'\fR ارسال شده باشد. .IP \fB\-s\fR 4 .IX Item "-s" تنها صحت ساختار نحوی فایل \&\fInewsfeeds\fR را بررسی می‌کند و خارج می‌شود. در صورت یافت شدن هرگونه خطا، \&\fBinnd\fR با وضعیتی غیرصفر خارج خواهد شد؛ خطاهای واقعی از طریق syslog(3) گزارش می‌شوند. .IP \fB\-S\fR 4 .IX Item "-S" خطاهای یافت‌شده در \&\fIincoming.conf\fR را از طریق syslog(3) گزارش می‌دهد و به‌صورت عادی خارج می‌شود. (بله، این گزینه کمتر از آنچه که باید سودمند است.) .IP "\fB\-t\fR \fIseconds\fR" 4 .IX Item "-t seconds" به‌طور معمول، \&\fBinnd\fR پس از ۳۰۰ ثانیه عدم فعالیت، هرگونه تغییر اعمال‌شده در تاریخچه و فایل \&\fIactive\fR را تخلیه (flush) می‌کند. این گزینه مهلت زمانی یادشده را به \&\fIseconds\fR تغییر می‌دهد. .IP \fB\-u\fR 4 .IX Item "-u" گزارش اخبار (اطلاعات ردگیری برای هر مقاله‌ای که توسط \&\fBinnd\fR پذیرفته می‌شود) به‌طور معمول بافر می‌شود. این گزینه گزارش را به حالت بدون بافر تغییر می‌دهد. .SH "پیام‌های کنترلی (CONTROL MESSAGES)" .IX Header "CONTROL MESSAGES" مقالاتی که دارای یک فیلد سرآیند Control هستند «پیام‌های کنترلی» نامیده می‌شوند. به‌جز پیام‌های لغو (cancel)، این پیام‌ها توسط controlchan(8) از طریق فیدی که در \&\fInewsfeeds\fR تنظیم شده است پردازش می‌شوند. .PP (پیام‌های لغو، پایگاه‌داده تاریخچه را به‌روزرسانی می‌کنند، بنابراین باید به‌صورت داخلی مدیریت شوند؛ با توجه به تعداد زیاد پیام‌های لغو دریافتی، هزینه همگام‌سازی، قفل کردن و سپس باز کردن قفل بسیار زیاد خواهد بود. توجه داشته باشید اگر مقاله‌ای پیش از رسیدن به سرور اخبار لغو شود، هنگام ورود رد خواهد شد زیرا پایگاه‌داده تاریخچه قبلاً به‌روزرسانی شده است؛ این قابلیت برای دفع هرزنامه‌ها پیش از رسیدن آن‌ها سودمند است.) .PP توزیع پیام‌های کنترلی با مقالات معمولی متفاوت است. پیام‌های کنترلی معمولاً صرف‌نظر از اینکه به چه گروه خبری ارسال شده باشند، در شبه‌گروه خبری به نام \&\f(CW\*(C`control\*(C'\fR ذخیره می‌شوند. با این حال، اگر گروه خبری منطبق با دستور کنترلی به‌صورت \&\f(CW\*(C`control.\*(C'\fR\fIcommand\fR وجود داشته باشد، پیام کنترلی در آن گروه ذخیره می‌شود. برای مثال، یک پیام کنترلی newgroup در صورت وجود گروه \&\f(CW\*(C`control.newgroup\*(C'\fR در آن گروه بایگانی می‌شود؛ در غیر این صورت در \&\f(CW\*(C`control\*(C'\fR ذخیره خواهد شد. .PP چنانچه مایلید تمامی پیام‌های کنترلی را به‌طور مشخص برای یک پایگاه معین ارسال کنید، صرف‌نظر از اینکه این پیام‌های کنترلی بر گروه‌های خبری ارسالی به آن پایگاه تأثیر بگذارند یا خیر، می‌توانید گروه خبری کنترلی مناسب را در فهرست اشتراک آن قرار دهید. برای نمونه، برای ارسال تمامی پیام‌های لغو به یک پایگاه دوردست معین (که معمولاً ایده مناسبی نیست)، \&\f(CW\*(C`control.cancel\*(C'\fR را به فهرست اشتراک آن بیفزایید. معمولاً بهتر است گروه‌های خبری کنترلی از فیدها مستثنی شوند تا از ارسال پیام‌های کنترلی بیشتر از میزان مورد نیاز برای همتایانتان جلوگیری شود. به همین دلیل است که الگوی \&\f(CW\*(C`!control,!control.*\*(C'\fR در \&\fInewsfeeds\fR بسیار به کار می‌رود (افزودن این الگو مانع از ارسال پیام‌های کنترلی که بر گروه‌های خبری ارسال‌شده به آن پایگاه تأثیر می‌گذارند نمی‌شود). .PP پیام‌های کنترلی checkgroups، newgroup و rmgroup تحت رفتارهای ویژه دیگری قرار می‌گیرند. اگر یکی از این پیام‌های کنترلی تأیید شده و به گروه خبری در حال ایجاد یا حذف (یا به گروه مدیریتی که checkgroups به آن فرستاده می‌شود) ارسال شود، پیام برای تمامی پایگاه‌هایی که الگوهای اشتراک آن‌ها موجب دریافت مقالات فرستاده‌شده به آن گروه می‌شود، ارسال خواهد شد. برای مثال، اگر یک پیام کنترلی newgroup برای گروه خبری ناموجود \&\f(CW\*(C`news.admin.meow\*(C'\fR دریافت شود، به هر پایگاهی که الگوی اشتراک آن در صورت وجود داشتن این گروه خبری باعث دریافت \&\f(CW\*(C`news.admin.meow\*(C'\fR می‌شد (مانند الگوی \&\f(CW\*(C`news.admin.*\*(C'\fR) ارسال خواهد شد. به همین دلیل، ارسال پیام‌های newgroup به گروه خبری که قرار است توسط پیام کنترلی ایجاد شود صحیح است. اما ارسال پیام‌های newgroup به‌صورت هم‌زمان (crosspost) به یک گروه خبری «با انتشار گسترده» عموماً درست \fIنیست\fR؛ این کار نه‌تنها انتشار آن‌ها را به پایگاه‌هایی که خواهان چنین پیام‌های کنترلی هستند بهبود نمی‌بخشد، بلکه باعث می‌شود پایگاه‌هایی نیز که تمایلی به این پیام‌های کنترلی ندارند آن‌ها را دریافت کنند. بنابراین، با این فرض که یک پیام کنترلی newgroup به‌منظور ایجاد گروه \&\f(CW\*(C`news.admin.meow\*(C'\fR به گروه \&\f(CW\*(C`news.admin.meow\*(C'\fR (مشخص‌شده در بدنه فیلد سرآیند Newsgroups) ارسال شده باشد، پایگاه‌هایی با الگوهای اشتراک زیر آن را دریافت خواهند کرد: .PP .Vb 4 \& *,@news.* \& news.* \& news.*,!control,!control.* \& control,control.* .Ve .PP در واقع برای الگوی نخست، \&\f(CW\*(C`control.newgroup\*(C'\fR (یا \&\f(CW\*(C`control\*(C'\fR) در \&\f(CW\*(C`*\*(C'\fR گنجانده شده است. با این حال، پایگاه‌هایی با الگوهای اشتراک زیر آن را دریافت نخواهند کرد: .PP .Vb 2 \& *,@news.*,!control,!control.* \& comp.*,@news.* .Ve .PP اگر یک پیام کنترلی به گروهی ارسال شود که نام آن با چهار نویسه \&\f(CW\*(C`.ctl\*(C'\fR به پایان می‌رسد، این پسوند حذف شده و پیام کنترلی به‌گونه‌ای منتشر می‌شود که گویی به گروه پایه ارسال شده است. برای مثال، یک پیام لغو ارسال‌شده به \&\f(CW\*(C`news.admin.ctl\*(C'\fR به تمامی پایگاه‌هایی که مشترک \&\f(CW\*(C`control.cancel\*(C'\fR (یا در صورت عدم وجود این گروه خبری، \&\f(CW\*(C`control\*(C'\fR) یا \&\f(CW\*(C`news.admin\*(C'\fR هستند ارسال خواهد شد. این رفتار به دلایل سازگاری تاریخی باقی مانده است و باید منسوخ تلقی شود؛ ممکن است پشتیبانی از پسوند \&\f(CW\*(C`.ctl\*(C'\fR در نسخه‌های آینده INN برچیده شود. .PP در نهایت، با مقالات فرستاده‌شده به گروه‌های خبری که با \&\f(CW\*(C`to.\*(C'\fR شروع می‌شوند به‌صورت ویژه رفتار می‌شود. به شرطی که آن گروه خبری در فایل \&\fIactive\fR وجود داشته باشد یا \&\fImergetogroups\fR در \&\fIinn.conf\fR تنظیم شده باشد، باقی‌مانده نام گروه خبری به‌عنوان نام پایگاه در نظر گرفته می‌شود (همان‌گونه که در \&\fInewsfeeds\fR پیکربندی شده است) و مقاله به پایگاه‌های منتشرکننده \&\f(CW\*(C`to.uunet\*(C'\fR ارسال می‌گردد. اگر \&\fImergetogroups\fR تنظیم شده باشد، مقاله در گروهی به نام \&\f(CW\*(C`to\*(C'\fR (که باید در فایل \&\fIactive\fR وجود داشته باشد) ذخیره خواهد شد. برای مثال، با فعال بودن \&\fImergetogroups\fR، مقاله‌ای که به \&\f(CW\*(C`to.uunet\*(C'\fR ارسال شده در گروه \&\f(CW\*(C`to\*(C'\fR ذخیره شده و برای پایگاه‌های منتشرکننده \&\f(CW\*(C`to.uunet\*(C'\fR ارسال می‌شود. .SH "تفاوت‌های پروتکل (PROTOCOL DIFFERENCES)" .IX Header "PROTOCOL DIFFERENCES" برنامه \&\fBinnd\fR دستورهای NNTP تعریف‌شده در RFC\ 3977 (NNTP)، RFC\ 4643 (احراز هویت NNTP)، RFC\ 4644 (فیدهای استریم NNTP) و RFC\ 6048 (افزوده‌های فهرست NNTP) را با تفاوت‌های زیر پیاده‌سازی می‌کند: .IP 1. 4 یک دستور انتقال دسته‌ای، XBATCH \fIbyte-count\fR، ارائه شده است. این دستور \&\fIbyte-count\fR بایت را می‌خواند و آن‌ها را برای پردازش بعدی توسط rnews(1) (که باید جداگانه، احتمالاً توسط cron اجرا شود) ذخیره می‌کند. برای جزئیات بیشتر درباره این افزونه به innxbatch(8) و \&\fBsendxbatches\fR مراجعه کنید. .IP 2. 4 از آنجا که INN یک سرور اخبار مبتنی بر تغییر حالت است، \&\fBinnd\fR زیرمجموعه محدودی از پروتکل را که برای انتقال اخبار سودمند است پیاده‌سازی می‌کند. باقی دستورها اغلب فقط برای خوانندگان اخبار کاربرد دارند و توسط nnrpd(8) پیاده‌سازی شده‌اند. استفاده از دستور MODE READER باعث می‌شود که \&\fBinnd\fR اتصال را به \&\fBnnrpd\fR منتقل کند. .IP 3. 4 برنامه \&\fBinnd\fR ساختار نحوی گسترده‌تری را برای الگوهای تطبیق (wildmats) مجاز می‌داند. .IP 4. 4 سه دستور (IHAVE، CHECK و TAKETHIS) به دلایل سازگاری و تعامل‌پذیری، در زمانی که دستور دارای خطای نحوی باشد همچنان یک کد رد (به‌ترتیب \&\f(CW\*(C`435\*(C'\fR، \&\f(CW\*(C`438\*(C'\fR و \&\f(CW\*(C`439\*(C'\fR) برمی‌گردانند (در حالی که این موارد به‌طور معمول به کد \&\f(CW\*(C`501\*(C'\fR منجر می‌شوند). .SH "تغییرات سرآیند (HEADER MODIFICATIONS)" .IX Header "HEADER MODIFICATIONS" برنامه \&\fBinnd\fR تا حد امکان کمترین تغییرات را در سرآیندهای مقالات اعمال می‌کند، اگرچه می‌توانست در این زمینه بهتر عمل کند. .PP بدنه‌های خالی فیلدهای سرآیند و بدنه‌هایی از فیلدهای سرآیند که صرفاً شامل نویسه‌های فاصله خالی هستند، دور انداخته می‌شوند. .PP نام پایگاه محلی (همان‌طور که با پارامتر \&\fIpathhost\fR در \&\fIinn.conf\fR تنظیم شده است) به همراه یک علامت تعجب به ابتدای بدنه فیلد سرآیند Path اضافه می‌شود، مشروط بر اینکه نخستین نام پایگاه در بدنه فیلد سرآیند Path با نام پایگاه محلی متفاوت باشد. علاوه بر این، \&\fIpathalias\fR و \&\fIpathcluster\fR ممکن است به‌طور مشابه و به‌ترتیب به‌عنوان هویت‌های مسیر، بلافاصله در سمت راست یا چپ \&\fIpathhost\fR در بدنه فیلد سرآیند Path الحاق شوند؛ برای جزئیات به inn.conf(5) مراجعه کنید. .PP فیلد سرآیند Xref حذف شده و یک فیلد جدید ایجاد می‌گردد. .PP برنامه \&\fBinnd\fR فیلدهای سرآیند نادرست را بازنویسی نمی‌کند. برای مثال، فیلد سرآیند نادرست Lines را جایگزین نخواهد کرد، هرچند ممکن است بسته به مقدار \&\fIlinecountfuzz\fR در \&\fIinn.conf\fR چنین مقاله‌ای را رد کند. .SH "فیدهای لغو (CANCEL FEEDS)" .IX Header "CANCEL FEEDS" به‌منظور اعمال کارآمد شمار زیادی از لغوهای محلی (مانند موارد ناشی از پردازش NoCeMها یا برخی منابع خارجی دیگر)، INN از یک حالت فید ویژه پشتیبانی می‌کند که تنها برای اتصال‌ها به سوکت محلی در دامنه یونیکس در دسترس است (نه برای اتصال‌ها به سوکت‌های شبکه). .PP برای ورود به این حالت، به سوکت دامنه یونیکس (\fIpathrun\fR/nntpin) متصل شوید و دستور MODE CANCEL را ارسال کنید. پاسخ سرور دارای کد \&\f(CW\*(C`284\*(C'\fR خواهد بود. هر خط بعدی ارسال‌شده روی آن اتصال باید تنها شامل یک شناسه پیام (message-ID) باشد. تلاشی برای لغو آن شناسه پیام صورت خواهد گرفت، و سرور در صورت موفقیت پاسخ \&\f(CW\*(C`289\*(C'\fR و در صورت شکست پاسخ \&\f(CW\*(C`484\*(C'\fR ارائه می‌دهد. (شکست می‌تواند برای نمونه زمانی رخ دهد که سرور متوقف یا محدود شده باشد، یا شناسه پیام مخدوش باشد. اگر مقاله‌ای که باید لغو شود وجود نداشته باشد، شکست رخ \fIنمی‌دهد\fR). .SH "گزارش‌گیری (LOGGING)" .IX Header "LOGGING" برنامه \&\fBinnd\fR تمامی مقالات ورودی را در فایل گزارش خود (\fIpathlog\fR/news) ثبت می‌کند. این یک فایل متنی با تعداد متغیری از فیلدهای جداشده با فاصله در یکی از قالب‌های زیر است: .PP .Vb 5 \& mon dd hh:mm:ss.mmm + feed site ... \& mon dd hh:mm:ss.mmm j feed site ... \& mon dd hh:mm:ss.mmm c feed Cancelling \& mon dd hh:mm:ss.mmm \- feed reason \& mon dd hh:mm:ss.mmm ? feed reason .Ve .PP بسته به تنظیمات \&\fInntplinklog\fR و \&\fIlogartsize\fR در \&\fIinn.conf\fR، ممکن است فیلدهای نام میزبان و/یا اندازه نیز پس از شناسه پیام وجود داشته باشد. .PP سه فیلد اول تاریخ و زمان را با دقت میلی‌ثانیه نشان می‌دهند. فیلد پنجم سایتی است که مقاله را فرستاده است (بر اساس بدنه فیلد سرآیند Path) و فیلد ششم شناسه پیام (Message-ID) مقاله است؛ در صورتی که اطلاعات موجود نباشد، این فیلدها یک علامت سؤال خواهند بود. .PP فیلد چهارم نشان می‌دهد که آیا مقاله پذیرفته شده است یا خیر. اگر علامت مثبت (+) باشد، مقاله پذیرفته شده است. اگر حرف \&\f(CW\*(C`j\*(C'\fR باشد، مقاله پذیرفته شده است، به این شرط که تمام گروه‌های خبری که مقاله به آن‌ها فرستاده شده بود در فایل \&\fIactive\fR روی وضعیت \&\f(CW\*(C`j\*(C'\fR تنظیم شده باشند (یا در فایل \&\fIactive\fR فهرست نشده باشند و \&\fIwanttrash\fR در \&\fIinn.conf\fR تنظیم شده باشد)، و در این حالت مقاله در گروه خبری \&\f(CW\*(C`junk\*(C'\fR قرار می‌گیرد. در هر دوی این موارد، مقاله پذیرفته شده است و فیلد \&\f(CW\*(C`site ...\*(C'\fR شامل فهرست جداشده با فاصله از پایگاه‌هایی است که مقاله به آن‌ها ارسال می‌شود. .PP اگر فیلد چهارم حرف \&\f(CW\*(C`c\*(C'\fR باشد، یک پیام لغو پیش از رسیدن مقاله اصلی پذیرفته شده است و یک مدخل تاریخچه برای پیام لغو شده ایجاد گردیده تا \&\fBinnd\fR در صورت رسیدن بعدی آن پیام، آن را رد کند. .PP اگر فیلد چهارم علامت منفی (\-) باشد، مقاله رد شده است. دلایل رد مقالات که توسط \&\fBinnd\fR تولید می‌شوند عبارتند از: .PP .Vb 10 \& "%s" header too long \& Article exceeds local limit of %s bytes \& Article posted in the future \-\- "%s" \& Bad "%s" header field \& Can\*(Aqt write history \& Duplicate \& Duplicate "%s" header field \& EOF in headers \& Linecount %s != %s +\- %s \& Missing %s header field \& No body \& No colon\-space in "%s" header field \& No matching newsgroups in cancel <%s> \& No space \& Space before colon in "%s" header field \& Too old \-\- "%s" \& Unapproved for "%s" \& Unwanted newsgroup "%s" \& Unwanted distribution "%s" \& Whitespace in "Newsgroups" header field \-\- "%s" .Ve .PP که در آن \&\f(CW\*(C`%s\*(C'\fR در بالا با اطلاعات دقیق‌تر جایگزین می‌شود. (فیلترهای Perl و Python در صورت استفاده ممکن است مقالات را با دلایل دیگری رد کنند.) .PP اگر فیلد چهارم حرف \&\f(CW\*(C`?\*(C'\fR باشد، مقاله حاوی رشته‌های نامتعارفی است؛ مانند CR بدون LF یا LF بدون CR. (این نویسه‌ها هرگز نباید به‌صورت مجزا رخ دهند، بلکه تنها باید همراه یکدیگر به‌صورت CRLF برای نشان دادن انتهای یک خط بیایند.) این پیام گزارش صرفاً جنبه اطلاع‌رسانی دارد تا دیدگاهی درباره میزان رواج چنین مقالاتی ارائه دهد؛ \&\fBinnd\fR چنین مقالاتی را رد نمی‌کند. .PP توجه داشته باشید هنگامی که \&\fIwanttrash\fR در \&\fIinn.conf\fR روی true تنظیم شده باشد و مقاله‌ای دریافت شود که به هیچ گروه خبری معتبری ارسال نشده است، پذیرفته شده و با دو خط در گزارش ثبت می‌شود: یک خط \&\f(CW\*(C`j\*(C'\fR و یک خط با علامت منفی؛ مگر اینکه پارامتر \&\fIlogtrash\fR روی false تنظیم شده باشد (که در این صورت فقط خط \&\f(CW\*(C`j\*(C'\fR نوشته می‌شود). .PP برنامه \&\fBinnd\fR همچنین گزارش‌های گسترده‌ای را از طریق syslog(3) ارائه می‌دهد. اگر مدخل مربوط به پایگاه خاصی باشد (مانند پیام "connected")، کلمه نخست پیام گزارش نام پایگاه خواهد بود. اگر پیام به خود سرور مربوط باشد، مانند زمانی که خطای خواندن رخ می‌دهد، کلمه اول \&\f(CW\*(C`SERVER\*(C'\fR خواهد بود. .PP اگر کلمه دوم عبارت چهارحرفی \&\f(CW\*(C`cant\*(C'\fR باشد، یک خطا در حال گزارش شدن است. (نبود علامت آپوستروف عمدی است؛ این کار اجرای grep از خط فرمان و یافتن پیام‌های خطا در سوالات متداول با موتور جستجو را آسان‌تر می‌سازد. با این حال، در چند مورد از \&\f(CW\*(C`can\*(Aqt\*(C'\fR نیز استفاده شده است.) در این حالت، دو کلمه بعدی عموماً نام فراخوانی سیستمی یا روال کتابخانه‌ای ناموفق و شیئی را که عملیات روی آن انجام می‌شده مشخص می‌کنند. باقی خط ممکن است شامل اطلاعات دیگری باشد. .PP در موارد دیگر، کلمه دوم سعی می‌کند تغییری را که صورت گرفته خلاصه کند، در حالی که بقیه خط اطلاعات مشخص‌تری ارائه می‌دهد. کلمه \&\f(CW\*(C`internal\*(C'\fR عموماً نشان‌دهنده یک خطای منطقی داخلی است. .SH "سیگنال‌ها (SIGNALS)" .IX Header "SIGNALS" برنامه \&\fBinnd\fR سیگنال‌های SIGTERM و SIGHUP را دریافت کرده و متوقف می‌شود. در صورت استفاده از \&\fB\-d\fR، سیگنال SIGINT نیز دریافت شده و منجر به توقف منظم سیستم خواهد شد. .PP برنامه \&\fBinnd\fR سیگنال SIGUSR1 را دریافت کرده و کانال کنترلی مورد استفاده توسط ctlinnd(8) را بازسازی می‌کند. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" نوشته‌شده توسط Rich $alz برای InterNetNews. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" active(5), ctlinnd(8), history(5), incoming.conf(5), inn.conf(5), innbind(8), innfeed(8), innstat(8), libinn_dbz(3), libinn_inndcomm(3), newsfeeds(5), nnrpd(8), rnews(1), syslog(3).