পোস্টফিক্স: সারিবদ্ধ প্রেরিত বার্তাগুলিতে পরিবর্তন করুন


8

সম্পূর্ণ পুনরায় ইনস্টলেশনের পরে আমরা কনফিগারেশনে সমস্যা পেয়েছি: প্রেরকের ঠিকানাটি ভুল ছিল এবং কিছু প্রাপক (মেল সার্ভার) এগুলি প্রত্যাখ্যান করেছিল।

সুতরাং পোস্টফিক্সের সারিতে আটকে থাকা মেলগুলির একটি গুচ্ছ রয়েছে।

আদর্শভাবে, প্রেরকের ঠিকানার পরিবর্তে সরাসরি সারিবদ্ধ মেলগুলি এবং তারপরে সারিটি ফ্লাশ করা অনুকূল হবে।

আমি এই উত্তরটি চেষ্টা করেছিলাম যা এটি খুব সমস্যার সমাধান করে। তবে বার্তাগুলি আমার কাছে থাকা সংস্করণে (2.11.0) সহজেই পরিবর্তনযোগ্য হবে বলে মনে হয় না।

উদাহরণস্বরূপ কোন /var/spool/mqueuedir আছে, কিন্তু, পরিবর্তে,/var/spool/postfix/...

active
bounce
corrupt
defer
deferred
dev
etc
flush
hold
incoming
lib
maildrop
pid
private
public
saved
trace
usr

এবং আগ্রহের dir হয় deferred। আমি সেখানে সঠিক কয়েকটি দিয়ে ভুল ডোমেন পরিবর্তন করে কয়েকটি ফাইল সংশোধন করার চেষ্টা করেছি (এবং কেবলমাত্র সেগুলি পরিবর্তন করা হয়েছে তা নিশ্চিত করার জন্য সতর্ক ছিল)।

কিন্তু তারপরে, সেই মেলগুলি সরানো হয়েছিল corrupt, এর অর্থ একটি সাধারণ পাঠ্য পরিবর্তনটি কাজ করে না বলে মনে হচ্ছে (সম্পন্ন হয়েছে vi)।

সারিবদ্ধ সারিবদ্ধ মেলগুলিতে অন্য কোনও ক্লিনার উপায়?

উত্তর:


19

আমি এই উত্তরটি চেষ্টা করেছি যা এটি খুব সমস্যার সমাধান করে। তবে বার্তাগুলি আমার কাছে থাকা সংস্করণে (2.11.0) সহজেই পরিবর্তনযোগ্য হবে বলে মনে হয় না।

উদাহরণস্বরূপ এখানে কোনও / var / spool / mqueue dir নেই, তবে পরিবর্তে / var / spool / postfix / ...

আমি দুটি বিষয় স্পষ্ট করতে চাই।

  • প্রথমত, সেই উত্তরটি প্রেরণমেল নোট পোস্টফিক্সে প্রয়োগ করা হয়েছিল।
  • দ্বিতীয়ত, ডাইরেক্ট-ম্যানিপুলেটিং-কাঁচা-ক্যু-ফাইলগুলি মোটেই সমর্থিত ছিল না।

সুতরাং, আপনার কাছে এখানে বেশ কয়েকটি বিকল্প রয়েছে

1. smtp_generic_maps পরামিতি

এই উত্তরের উত্তরে অনুপ্রাণিত এই উত্তরটি । এটি পুরানো ঠিকানাটি নতুন ঠিকানায় স্বয়ংক্রিয়ভাবে পুনরায় লিখবে। আপনি পুরানো ঠিকানা মানচিত্রে নতুন ঠিকানায় ফাইল সংজ্ঞায়িত করতে পারেন।

/etc/postfix/main.cf:
    smtp_generic_maps = hash:/etc/postfix/generic

/etc/postfix/generic:
    account@localdomain.example.com       account@example.com

postmap /etc/postfix/genericএবং চালাতে ভুলবেন নাpostfix reload

  • ওলট: আপনি বার্তা requeue করার দরকার নেই
  • Downside: postfix rewriting হবে প্রেরক ও প্রাপকের ঠিকানা যা ম্যাচিং account@localdomain.example.com

2. সেন্ডার_কেনোনিক্যাল_এড্রেস

প্রথম বিকল্পের খারাপ দিকটি কাটিয়ে উঠতে, আপনি ব্যবহার করতে পারেন sender_canonical_mapsপোস্টফিক্স লেখকের পরামর্শের ভিত্তিতে এই সমাধান । প্রথম বিকল্প হিসাবে একই, আপনি পুরানো ঠিকানা মানচিত্রে নতুন ঠিকানায় ফাইল সংজ্ঞায়িত করতে পারেন।

/etc/postfix/main.cf:
    sender_canonical_maps = hash:/etc/postfix/sender_canonical

/etc/postfix/sender_canonical:
    account@localdomain.example.com       account@example.com

চালান postmap /etc/postfix/sender_canonicalতারপর চালান postfix reload। পোস্টফিক্স সারি প্রবাহিত হওয়ার কারণে, আপনাকে অবশ্যই কমান্ড সহ প্রভাবিত সারির পুনরায় সারি করতে হবেpostsuper -r queueid

  • উপরিভাগ: পোস্টফিক্স প্রাপক ঠিকানা পুনর্লিখন না।
  • ডাউনসাইড: আপনার অবশ্যই সমস্ত প্রভাবিত বার্তা প্রেরণ করতে হবে। তবে আপনি একক আদেশ দিয়ে স্থগিত সমস্ত দাবি করতে পারেনpostsuper -r ALL deferred

৩) পোস্টফিক্সের সারিতে সরাসরি হেরফের করা ulating

উন্নত প্রক্রিয়াজাতকরণের জন্য সারি পরিবর্তন করার জন্য এটি ম্যানুয়ালের পুরানো উপায়। এই উত্তরটি পোস্টফিক্স-ব্যবহারকারীদের মেলিং তালিকা থেকে এসেছে

সংক্ষেপে

  • সারিবদ্ধ করুন

    # postsuper -h queueid
    # postcat -qbh queueid > tempfile.eml
    # vi tempfile.eml
    
  • পুনরায় জমা দিন সারি এবং পুরানো সারি মুছুন

    # sendmail -f $sender $recipient < tempfile.eml
    # postsuper -d queueid
    

উপরের কমান্ডের ডকুমেন্টেশনের জন্য, এই পৃষ্ঠাটি দেখুন

দ্রষ্টব্য: পোস্টফিক্স-ব্যবহারকারীদের মেলিং তালিকা
থেকে আসল সমাধান , সারি বের করার জন্য ব্যবহার । এই কমান্ডটি সারিটির শিরোনাম, দেহ এবং মেটা-তথ্য বের করবে। নিচে সরু Azendale হিসাবে , মেটা-তথ্য কারণে আপনি এই বিকৃত ইমেল পাঠাতে প্রত্যাখ্যান করবে।postcat -q queueid >tempfilesendmail

-bhপ্যারামিটার ছাড়াও প্যারামিটার ব্যবহার করা qমেটা-তথ্য সহ নয়, কেবলমাত্র শিরোনাম এবং শরীরে পোস্টক্যাট ফিল্টার করে। এর একটি পার্শ্ব সুবিধা হ'ল টেম্পাইলটি ইমেল ফর্ম্যাট হিসাবে বেশিরভাগ ইমেল ক্লায়েন্ট স্বীকৃত ফর্ম্যাটটিতে থাকে, আপনাকে ফলাফল (সম্পাদিত) বার্তাটি দেখতে দেয়।


1
আমি এটি চেষ্টা করেছিলাম, এবং অন্ততপক্ষে আমার পোস্টফিক্সের সংস্করণ দিয়ে, আমি जस्तो কিছু ব্যবহার না করা অবধি বার্তাটি প্রেরণ করব বলে মনে হয় না postcat -qbh queueid >tempfile। (পার্শ্ব সুবিধা: এটি তখন ইমেল ফর্ম্যাটে রয়েছে।) আমি যদি কেবলমাত্র ব্যবহার -qকরি তবে মনে হয় আমি সেন্ডমেল চালানোর সময় কিছুই করার ছিল না। পোস্টফিক্স সংস্করণ 2.8.4। কেউ কি এটি নিশ্চিত করতে পারবেন? যদি তা হয় তবে আসুন এই উত্তরটি সম্পাদনা করুন।
আজেন্ডালে

হাই @ আজেন্ডালে, আমি তৃতীয় সমাধানটি পরীক্ষা করছি এবং হ্যাঁ qbhএটি কার্যকর করার জন্য আমাদের প্রয়োজন । আপডেট করা উত্তরে ব্যাখ্যা যোগ করা হচ্ছে ... :)
masegaloeh

ধন্যবাদ! মত তৃতীয় সমাধান খুঁজছিলেন। এটা ঠিক নিখুঁত!
জাজ

1

গ্রেট রাইটআপ। আমার একটি মেল সার্ভারে সমস্যা ছিল যা কিছুদিন ধরে খারাপ কনফিগারেশন নিয়ে চলছিল এবং তাই এখানে অনেকগুলি সারি রয়েছে যা নতুন প্রাপকের সাথে প্রেরণ করা দরকার। সুতরাং আমি সমস্ত সারিতে লুপ করতে দুটি একটি লাইন তৈরি করেছি:

সমস্ত সারি সন্ধান করার জন্য প্রথমে সেগুলি আটকে রাখুন, তাদেরকে .ml ফাইল হিসাবে সংরক্ষণ করুন এবং তাদের পুনরায় পাঠাতে হবে:

for ID in `mailq | awk '$1 !~/^$|[@\(^$-]/ { print $1 }' | tr -d \!`; do postsuper -h $ID; postcat -qbh $ID > tempfile$ID.eml; sendmail -f $sender $recipient < tempfile$ID.eml; done

সারি মুছে ফেলার জন্য দ্বিতীয়:

for ID in `mailq | awk '$1 !~/^$|[@\(^$-]/ { print $1 }' | tr -d \!`; do postsuper -d $ID; done

কেবলমাত্র এই শেষ কোডটি চালানোর আগে এমন কোনও নতুন সারি নেই যা ধরে নেই তা পরীক্ষা করে দেখুন। এটি জারি করে এটি করুন এবং একটি 'ছাড়া' সারির আইডি সন্ধান করুন! শেষে:

mailq | awk '$1 !~/^$|[@\(^$-]/ { print $1 }'

এই দুটি খুব সহজেই একটিতে একটি দুটি লাইনার রাখতে পারে তবে আমার মনে হয়েছিল যে সারিগুলি মুছে ফেলার আগে মেইলগুলি আসলে পাওয়া গেছে checking

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.