SEND-UUCP(8) InterNetNews Documentation SEND-UUCP(8)

send-uucp - ارسال مقاله‌های یوزنت از طریق UUCP

send-uucp [site ...]

برنامهٔ send-uucp فایل‌های دسته‌ای (batch files) ایجادشده توسط innd(8) را برای ارسال مقاله‌های یوزنت (Usenet) به سایت‌های UUCP پردازش می‌کند. این برنامه یک فایل پیکربندی را برای کنترل نحوهٔ رفتار خود با سایت‌های مختلف می‌خواند. معمولاً این برنامه به‌طور دوره‌ای از طریق cron اجرا می‌شود تا دسته‌ها را کنار هم قرار داده و آن‌ها را به سایت‌های راه‌دور UUCP ارسال کند.

این برنامه کاهش مصرف پهنای باند و ارسال خبر به سایت‌های راه‌دور UUCP را که نمی‌توانند خوراک بی‌درنگ (real-time feed) دریافت کنند (برای نمونه در صورتی که روی اتصالات Dial-up باشند) امکان‌پذیر می‌سازد.

هرگونه آرگومان ارائه‌شده به برنامه به عنوان فهرستی از سایت‌های مشخص‌شده در send-uucp.cf تفسیر می‌شود که باید برای آن‌ها دسته‌ها تولید شوند. اگر هیچ آرگومانی ارائه نشود، دسته‌ها برای تمام سایت‌های فهرست‌شده در آن فایل پیکربندی تولید خواهند شد.

سایت‌هایی که مقاله‌ها باید به آن‌ها ارسال شوند باید در فایل پیکربندی send-uucp.cf واقع در pathetc (همان‌طور که در inn.conf تنظیم شده است) پیکربندی شوند. هر سایت با خطی به شکل زیر مشخص می‌شود:

site[:host[:funnel]] [compressor [maxsize [batchtime]]]
نام سایت خبری در حال پیکربندی. این نام باید با یک نام سایت از newsfeeds(5) مطابقت داشته باشد.
نام میزبان UUCP که دسته‌ها باید برای این سایت به آن ارسال شوند. در صورت حذف، از نام سایت خبری به عنوان نام میزبان UUCP استفاده خواهد شد.
در مورد سایتی که به عنوان قیف (funnel) پیکربندی شده است، send-uucp باید کانال (یا exploder) مورد استفاده به عنوان مقصد قیف را تخلیه (flush) کند، به جای اینکه خود سایت را تخلیه نماید. این روش به send-uucp نام کانال یا exploder مورد نظر برای تخلیهٔ این سایت را اعلام می‌کند. در صورت عدم تعیین، به‌طور پیش‌فرض سایت تخلیه می‌شود.
روش فشرده‌سازی مورد استفاده برای دسته‌ها. این روش باید یکی از "bzip2"، "compress"، "gzip" یا "none" باشد. آرگومان‌های دستور فشرده‌سازی را می‌توان با استفاده از "_" به جای فاصله‌ها مشخص کرد. برای مثال، "gzip_-9". مقدار پیش‌فرض "gzip" است.
حداکثر اندازهٔ یک دستهٔ منفرد به بایت پیش از فشرده‌سازی. مقدار پیش‌فرض "500000" بایت است.
فهرستی از ساعت‌های جداشده با کاما که در طول آن‌ها باید برای یک سایت معین دسته تولید شود. هنگامی که send-uucp اجرا می‌شود، یک سایت تنها در صورتی پردازش خواهد شد که ساعت فعلی با یکی از ساعت‌های موجود در batchtime مطابقت داشته باشد. پیش‌فرض بدون محدودیت در زمان تولید دسته‌ها است.

فیلدها با فاصله از یکدیگر جدا می‌شوند و فقط نام سایت باید مشخص شود، و برای مقادیر مشخص‌نشده از مقادیر پیش‌فرض استفاده می‌شود. اگر اولین نویسه در یک خط علامت هش ("#") باشد، باقی خط نادیده گرفته می‌شود.

در اینجا یک نمونه برای فایل پیکربندی send-uucp.cf آورده شده است:

zoetermeer      gzip            1048576         5,18,22
hoofddorp       gzip            1048576         5,18,22
pa3ebv          gzip            1048576         5,18,22
drinkel         bzip2           1048576         5,6,18,20,22,0,2
manhole         compress        1048576         5,18,22
owl             compress        1048576
able
pern::MYFUNNEL!

این پیکربندی هشت سایت UUCP را تعریف می‌کند. سه سایت اول و دو سایت آخر از فشرده‌سازی "gzip" استفاده می‌کنند، سایت چهارم ("drinkel") از "bzip2" و سایت‌های باقی‌مانده ("manhole" و "owl") از "compress" استفاده می‌کنند. شش سایت اول از اندازهٔ دستهٔ ۱ مگابایت (1 MB) استفاده می‌کنند و دو سایت آخر ("able" و "pern") از مقدار پیش‌فرض ۵۰۰٬۰۰۰ بایت استفاده می‌کنند. برای سایت‌های "zoetermeer"، "hoofddorp"، "pa3ebv" و "manhole" تنها در طول ساعت‌های 05:00، 18:00 و 22:00 دسته تولید خواهد شد، و برای سایت "drinkel" تنها در طول آن ساعت‌ها به‌همراه 06:00، 20:00، 00:00 و 02:00 دسته تولید خواهد شد. هیچ محدودیتی در زمان تولید دسته‌ها برای "owl"، "able" و "pern" وجود ندارد.

سایت "pern" به عنوان قیف به داخل "MYFUNNEL!" پیکربندی شده است. send-uucp به جای "ctlinnd flush pern" دستور "ctlinnd flush MYFUNNEL!" را صادر خواهد کرد.

در رابطه با فایل newsfeeds، پرچم‌های متداول مورد استفاده برای خوراک UUCP عبارتند از "Tf,Wnb". در اینجا یک مدخل نمونه برای "zoetermeer" آورده شده است، که در آن دسته‌بندی بین 4 KB و 1 KB نگه داشته می‌شود:

zoetermeer\
    :*,!junk,!control,!control.*/!foo\
    :Tf,Wnb,B4096/1024:

در اینجا مراحلی که باید برای راه‌اندازی یک خوراک UUCP بر بستر SSH بین دو کارگزار خبر دنبال کنید آورده شده است، با استفاده از پیاده‌سازی UUCP موجود در دبیان به صورت بستهٔ "uucp". سازوکارهای شرح‌داده‌شده در زیر را در صورت استفاده از پیاده‌سازی دیگری از UUCP باید تطبیق دهید. (و اگر چنین کردید، لطفاً به نگهدارندگان INN دربارهٔ نحوهٔ راه‌اندازی خوراک با سایر پیاده‌سازی‌های UUCP اطلاع دهید تا بتوان آن را به این مستندات افزود.)

1.
قبل از هر چیز، مطمئن شوید که rnews به درستی با بیت setuid برای "news"، مالکیت گروه "uucp" و با مجوز دسترسی (mode) "4550" نصب شده باشد. این کار به زیرسیستم UUCP اجازه می‌دهد تا rnews را برای پردازش دسته‌های UUCP از مقاله‌های خبری اجرا کند. پرچم --enable-uucp-rnews در اسکریپت "configure" هنگام نصب INN این کار را انجام می‌دهد. در غیر این صورت، باید مجوزهای دسترسی روی rnews را به صورت دستی تغییر دهید.
2.
بستهٔ "uucp" را نصب کنید. این بسته به‌ویژه uucico(8) و uux(1) را فراهم خواهد کرد.
3.
کارگزارهای خبر راه‌دور را برای سرکشی (poll) و ساعت‌هایی را که در طول آن‌ها باید سرکشی شوند در /etc/uucp/Poll پیکربندی کنید. برای نمونه، اگر دسته‌های UUCP را هر ۴ ساعت یک‌بار به "news.server.to.feed" ارسال می‌کنید، می‌توانید از پیکربندی زیر استفاده کنید:
schedule news.server.to.feed 00
poll news.server.to.feed 00 04 08 12 16 20

اگر ارسال به صورت ساعتی است، فقط تمام ساعت‌ها را فهرست کنید.

4.
اعتبارنامه‌ها (نام‌های کاربری و گذرواژه‌ها) را برای استفاده هنگام احراز هویت در برابر کارگزارهای خبر راه‌دور در /etc/uucp/call، به ازای هر خط یک مورد، پیکربندی کنید. برای نمونه:
news.server.to.feed login password
5.
نام UUCP کارگزار خبر محلی را در /etc/uucp/config پیکربندی کنید. برای نمونه:
nodename my.news.server
6.
بررسی کنید که /etc/uucp/expire از نظر تعداد روزهای نگهداری دسته‌ها و همچنین پیکربندی گزارش‌های روزانه با نیازهای شما مطابقت داشته باشد. مقادیر پیش‌فرض معمولاً مناسب هستند، هرچند ممکن است بخواهید گزارش روزانه را تنها در صورت وقوع رخدادهای غیرعادی دریافت کنید (و در این حالت، کافی است "$important_only" را روی "1" تنظیم نمایید).
7.
اعتبارنامه‌هایی (نام‌های کاربری و گذرواژه‌های جداشده با کلید Tab) را که کارگزارهای خبر راه‌دور هنگام احراز هویت در برابر کارگزار خبر محلی استفاده می‌کنند در /etc/uucp/passwd، به ازای هر خط یک مورد، پیکربندی کنید. برای نمونه:
login<TAB>password
8.
نحوهٔ اتصال کارگزارهای خبر راه‌دور به کارگزار خبر محلی را در /etc/uucp/sys پیکربندی کنید. یک مدخل متداول برای برقراری اتصال SSH مدخل زیر است که در آن pathbin باید به مسیر واقعی rnews تغییر یابد:
system news.server.to.feed
call-login *
call-password *
commands <pathbin>/rnews
time any
chat "" \d\d\r\c ogin: \d\L word: \P
chat-timeout 120
protocol i
port ssh.news.server.to.feed
9.
نحوهٔ اتصال به کارگزارهای خبر راه‌دور را در /etc/uucp/port پیکربندی کنید. یک مدخل متداول برای برقراری اتصال SSH با استفاده از کلید خصوصی عبارت است از:
port ssh.news.server.to.feed
type pipe
command /bin/ssh -a -x -q -i <key> -l uucp news.server.to.feed
reliable true
protocol etyig

که در آن key مسیر کلید خصوصی مورد استفاده برای اتصال SSH است، مانند /var/spool/uucp/.ssh/id_private_key.

10.
اطمینان حاصل کنید که مدیران کارگزارهای خبر راه‌دور، کلید عمومی مربوط به id_private_key را برای اتصالات به کاربر "uucp" در کارگزارهای خبر راه‌دور اضافه کرده باشند.
11.
با فرض اینکه دایرکتوری خانگی کاربر "uucp" مسیر /var/spool/uucp باشد، باید کلیدهای SSH را در زیردایرکتوری .ssh پیکربندی کنید. ابتدا کلیدهای عمومی تمام کارگزارهای خبر راه‌دور را در authorized_keys اضافه نمایید. یک مدخل متداول به صورت زیر است که باید در ۱ خط باشد (در اینجا برای نمایش مناسب در صفحهٔ man شکسته شده است):
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,
command="/usr/sbin/uucico -l",from="news.server.to.feed"
ssh-rsa xxxyyyzzz uucp@news.server.to.feed

این کار تضمین می‌کند که از اتصال SSH برای هدفی غیر از تبادل دسته‌های UUCP استفاده نخواهد شد.

12.
اطمینان حاصل کنید که id_private_key، همان‌طور که در /etc/uucp/port تنظیم شده است، به درستی وجود داشته باشد و تنها توسط کاربر "uucp" قابل خواندن باشد.
13.
دستور تنظیم‌شده در /etc/uucp/port را به صورت دستی با کاربر "uucp" اجرا کنید تا فایل known_hosts ایجاد شود و از صحت تنظیمات SSH اطمینان حاصل گردد.
/bin/ssh -a -x -q -i <key> -l uucp news.server.to.feed
14.
خوراک ارسالی به کارگزارهای راه‌دور را پارامتربندی کنید. یک مدخل متداول در newsfeeds برای تولید دسته‌ها در pathoutgoing عبارت است از:
news.server.to.feed/pathname:*:Tf,Wnb,B4096/1024:
15.
روش فشرده‌سازی، اندازهٔ دسته‌ها و زمان تولید آن‌ها را در فایل send-uucp.cf واقع در pathetc، همان‌طور که پیش‌تر در این مستندات شرح داده شد، تنظیم نمایید.
news.server.to.feed   bzip2      1048576   3,7,11,15,19,23
16.
بررسی کنید که send-uucp به صورت ساعتی در crontab توسط کاربر "news" اجرا شود. برای نمونه در /etc/cron.d/inn2:
52 * * * * news <pathbin>/send-uucp

تنظیم زمان راه‌اندازی متفاوتی نسبت به کارگزارهای راه‌دورتان می‌تواند مفید باشد. برای نمونه، اگر شما دسته‌ها را هر ساعت در دقیقهٔ ۵۲ تولید کنید، یک همتای راه‌دور ممکن است همین کار را در دقیقهٔ ۲۲ انجام دهد. به این ترتیب، بسته به اینکه هر کدام چه زمانی متصل شوید، می‌توانید مقاله‌ها را با بسامد بیشتری تبادل کنید.

17.
بررسی کنید که برنامه‌های UUCP به‌طور خودکار در crontab اجرا شوند (معمولاً uudemon.hr به‌صورت ساعتی در /etc/cron.d/uucp برای سرکشی کارگزارهای خبر راه‌دور و uudemon.day به‌صورت روزانه در /etc/cron.daily/uucp فراخوانی می‌شوند).

همانند send-uucp، زمان اجرا را تنظیم کنید تا تعداد و تازگی دسته‌ها برای تبادل به بیشترین مقدار برسد.

18.
گزارش‌ها را در /var/log/uucp بررسی کنید تا از عملکرد درست همه‌چیز، چه سرکشی و چه ارسال، اطمینان حاصل نمایید.

خواهید دید که send-uucp دسته‌های rnews با نام‌هایی مانند D.0I8Y را آماده می‌کند که توسط uux در صف قرار می‌گیرند. هنگامی که پس از آن uucico از طریق cron برای انتقال این دسته‌ها اجرا می‌شود، uucico دسته‌های موجود را به‌طور همزمان از سایت‌های راه‌دور دریافت می‌کند. این دسته‌های دریافت‌شده سپس توسط uuxqt که rnews را برای تزریق آن‌ها فراخوانی می‌کند، پردازش می‌شوند.

همین!

خود اسکریپت پرل (Perl) که برای ایجاد دسته‌های خبری از فایل‌های خروجی استفاده می‌شود.
فایل پیکربندی که فهرستی از سایت‌های مورد نظر برای پردازش را مشخص می‌کند.
فایل گزارش که در صورت در دسترس نبودن سرویس syslog استفاده می‌شود.

این برنامه در ابتدا توسط Edvard Tuinder <ed@elm.net> نوشته شد و سپس توسط Miquel van Smoorenburg <miquels@cistron.nl> نگهداری و گسترش یافت. Marco d'Itri <md@linux.it> کد را برای گنجاندن در INN پاکسازی کرد. این صفحهٔ راهنما در ابتدا توسط Mark Brown <broonie@sirena.org.uk> نوشته شد و روند دقیق راه‌اندازی خوراک UUCP توسط Julien Élie اضافه گردید.

innd(8), newsfeeds(5), uucp(8).

2025-03-29 INN 2.7.4