وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

ایمن سازی ارسال ایمیل با پایتون: احراز هویت و رمزگذاری

0 3
زمان لازم برای مطالعه: 9 دقیقه


رمزگذاری ایمیل و احراز هویت، تکنیک‌های امنیتی مدرنی هستند که می‌توانید از آنها برای محافظت از ایمیل‌ها و محتوای آنها در برابر دسترسی غیرمجاز استفاده کنید.

همه، از افراد گرفته تا صاحبان مشاغل، از ایمیل‌ها برای ارتباط رسمی استفاده می‌کنند که ممکن است حاوی اطلاعات حساس باشد. بنابراین، ایمن سازی ایمیل ها مهم است، به خصوص زمانی که حملات سایبری مانند فیشینگ، smishing و غیره به شدت افزایش می یابد.

در این مقاله، روش ارسال ایمیل در پایتون را به صورت ایمن و با استفاده از آن بحث خواهم کرد رمزگذاری ایمیل و احراز هویت

راه اندازی محیط پایتون

قبل از شروع ایجاد کد برای ارسال ایمیل، ابتدا محیط پایتون خود را با تنظیمات و کتابخانه های مورد نیاز خود تنظیم کنید.

شما می توانید ایمیل ها را در پایتون با استفاده از:

  • پروتکل ساده انتقال نامه (SMTP): این پروتکل در سطح برنامه، این پروتکل را ساده می کند process از آنجایی که پایتون یک کتابخانه یا ماژول داخلی ارائه می دهد (smtplib) برای ارسال ایمیل. این برای مشاغل در هر اندازه و همچنین افراد برای خودکارسازی مناسب است ارسال ایمیل امن در پایتون. ما از جیمیل استفاده می کنیم سرویس SMTP در این مقاله

  • یک API ایمیل: می توانید از یک API شخص ثالث مانند Mailtrap Python SDK، SendGrid، Gmail API و غیره برای ارسال ایمیل در پایتون استفاده کنید. این روش ویژگی های بیشتر و سرعت تحویل ایمیل بالا را ارائه می دهد، اگرچه نیاز به سرمایه گذاری دارد.

در این آموزش، ما اولین انتخاب را انتخاب می کنیم – ارسال ایمیل در پایتون با استفاده از SMTP، که توسط smtplib کتابخانه این کتابخانه از پروتکل RFC 821 استفاده می کند و با SMTP و سرورهای پستی تعامل دارد تا ارسال ایمیل از برنامه های شما را ساده کند. علاوه بر این، باید بسته هایی را برای فعال کردن نصب کنید رمزگذاری ایمیل پایتون، احراز هویت و قالب بندی.

مرحله 1: پایتون را نصب کنید

زبان برنامه نویسی پایتون را نصب کنید روی کامپیوتر شما (ویندوز، macOS، لینوکس و غیره). می توانید مراجعه کنید وب سایت رسمی پایتون و از آنجا دانلود و نصب کنید.

اگر قبلاً آن را نصب کرده اید، این کد را برای تأیید آن اجرا کنید:

python --version

مرحله 2: ماژول ها و کتابخانه های لازم را نصب کنید

  • smtplib: این ارتباطات SMTP را مدیریت می کند. از کد زیر استفاده کنید تا import ‘smtplib’ و به سرور ایمیل خود متصل شوید:

    import smtplib
    
  • email ماژول: این کلاس ها (موضوع، به، از، و غیره) را برای ساخت و تجزیه ایمیل ها فراهم می کند. همچنین رمزگذاری و رمزگشایی ایمیل را با افزونه های ایمیل چند منظوره اینترنتی (MIME) تسهیل می کند.

  • MIMEText: برای قالب‌بندی ایمیل‌های شما استفاده می‌شود و از ارسال ایمیل با متن و پیوست‌هایی مانند تصاویر، ویدیوها و غیره پشتیبانی می‌کند. این را با استفاده از کد زیر وارد کنید:

    import MIMEText
    
  • MIMEMultipart: از این کتابخانه برای افزودن پیوست ها و بخش های متنی به طور جداگانه در ایمیل خود استفاده کنید.

    import MIMEMultipart
    
  • ssl: رمزگذاری لایه سوکت های امن (SSL) را فراهم می کند.

مرحله 3: یک حساب کاربری جیمیل ایجاد کنید

برای ارسال ایمیل با استفاده از جیمیل سرویس ایمیل SMTP، توصیه می کنم یک حساب آزمایشی برای توسعه کد ایجاد کنید. پس از آزمایش کد، حساب را حذف کنید.

دلیل آن این است که شما باید تنظیمات امنیتی حساب جیمیل خود را تغییر دهید تا امکان دسترسی از کد پایتون برای ارسال ایمیل فراهم شود. این ممکن است جزئیات ورود را فاش کند و امنیت را به خطر بیندازد. علاوه بر این، حساب شما را با ایمیل های آزمایشی بیش از حد پر می کند.

بنابراین، به جای استفاده از حساب جیمیل خود، یک حساب جدید برای ایجاد و آزمایش کد ایجاد کنید. در اینجا روش انجام این کار آمده است:

  • یک حساب کاربری جدید در جیمیل ایجاد کنید
  • رمز عبور برنامه خود را تنظیم کنید:
    Google Account > Security > Turn روی 2-Step Verification > Security > Set up an App Password
    در مرحله بعد، یک نام برای رمز عبور برنامه تعریف کنید و کلیک کنید روی “تولید”. پس از انجام برخی دستورالعمل ها، یک رمز عبور 16 رقمی دریافت خواهید کرد روی صفحه نمایش رمز عبور را با خیال راحت ذخیره کنید.

هنگام ارسال ایمیل در پایتون از این رمز عبور استفاده کنید. در اینجا، ما از Gmail SMTP استفاده می‌کنیم، اما اگر می‌خواهید از ارائه‌دهنده خدمات پست دیگری استفاده کنید، همان را دنبال کنید. process. در غیر این صورت، با تیم فناوری اطلاعات شرکت خود تماس بگیرید تا برای دسترسی به سرور SMTP خود، پشتیبانی دریافت کنید.

احراز هویت ایمیل با پایتون

احراز هویت ایمیل یک مکانیسم امنیتی است که هویت فرستنده را تأیید می کند و از قانونی بودن ایمیل های یک دامنه اطمینان می دهد. اگر مکانیزم احراز هویت ایمیل ندارید، ممکن است ایمیل‌های شما در پوشه‌های هرزنامه قرار بگیرند یا عوامل مخرب بتوانند آنها را جعل یا رهگیری کنند. این می تواند بر نرخ تحویل ایمیل شما و شهرت فرستنده تأثیر بگذارد.

پیشنهاد می‌کنیم بخوانید:  راهنمای enumerate() در پایتون - آسان برای حلقه ها با شمارش

این دلیلی است که باید فعال کنید احراز هویت ایمیل پایتون مکانیسم ها و پروتکل ها مانند:

  • احراز هویت SMTP: اگر با استفاده از سرور SMTP مانند Gmail SMTP ایمیل ارسال می کنید، می توانید از این روش احراز هویت استفاده کنید. هنگام ارسال ایمیل از طریق یک سرور ایمیل خاص، صحت فرستنده را تأیید می کند.

  • SPF: مخفف عبارت Sender Policy Framework است و بررسی می کند که آیا آدرس IP سرور ارسال کننده در میان است یا خیر

  • DKIM: مخفف DomainKeys Identified Mail است و برای افزودن امضای دیجیتال به ایمیل ها استفاده می شود تا اطمینان حاصل شود که هیچ کس نمی تواند محتوای ایمیل را در حین انتقال تغییر دهد. سپس سرور گیرنده امضای دیجیتال را تأیید می کند. بنابراین، تمام ایمیل‌های شما و محتوای آن‌ها امن و بدون تغییر باقی می‌مانند.

  • DMARC: مخفف عبارت Domain-based Message Authentication، Reporting و Conformance است. DMARC به سرورهای ایمیل دستور می دهد در صورت عدم احراز هویت ایمیل چه کاری انجام دهند. علاوه بر این، گزارش هایی را در صورت شناسایی هرگونه فعالیت مشکوک ارائه می دهد روی دامنه شما

روش پیاده سازی احراز هویت ایمیل در پایتون

برای احراز هویت ایمیل خود در پایتون با استفاده از SMTP، smtplib کتابخانه مفید است در اینجا چگونه است امنیت SMTP پایتون آثار:

import smtplib

server = smtplib.SMTP('smtp.domain1.com', 587)
server.starttls()  
server.login('(email protected)', 'my_password')

message = "Subject: Test Email."
server.sendmail('(email protected)', '(email protected)', message)

server.quit()

اجرای احراز هویت ایمیل یک لایه امنیتی اضافی به ایمیل های شما اضافه می کند و از آنها در برابر مهاجمان یا علامت گذاری به عنوان هرزنامه محافظت می کند.

رمزگذاری ایمیل ها با پایتون

رمزگذاری ایمیل ها شما را قادر می سازد از محتوای ایمیل خود محافظت کنید تا فقط فرستندگان و گیرندگان مجاز بتوانند به محتوا دسترسی یا مشاهده کنند. رمزگذاری ایمیل ها با پایتون با استفاده از تکنیک های رمزگذاری برای رمزگذاری پیام ایمیل و تبدیل آن به یک قالب امن و غیرقابل خواندن (همچنین به عنوان متن رمزی شناخته می شود) انجام می شود.

به این ترتیب، رمزگذاری ایمیل پیام را از دسترسی غیرمجاز یا مهاجمان محافظت می کند، حتی اگر آنها ایمیل را رهگیری کنند.

در اینجا متفاوت است انواع رمزگذاری ایمیل:

  • SSL: این مخفف عبارت Secure Sockets Layer، یکی از محبوب ترین و پرکاربردترین پروتکل های رمزگذاری است. SSL با رمزگذاری داده های ارسال شده بین سرور ایمیل و مشتری، محرمانه بودن ایمیل را تضمین می کند.

  • TLS: این مخفف عبارت Transport Layer Security است و امروزه یک پروتکل رمزگذاری ایمیل رایج است. بسیاری آن را جایگزینی عالی برای SSL می دانند. این اتصال بین یک سرویس گیرنده ایمیل و سرور ایمیل را رمزگذاری می کند تا از رهگیری ایمیل در حین ارسال آن جلوگیری کند.

  • E2EE: این مخفف رمزگذاری سرتاسر است و اطمینان حاصل می کند که فقط گیرنده مورد نظر با اعتبارنامه معتبر می تواند محتوای ایمیل را رمزگشایی کرده و آن را بخواند. هدف آن جلوگیری از شنود ایمیل و ایمن سازی پیام است.

روش پیاده سازی رمزگذاری ایمیل در پایتون

اگر سرور ایمیل شما به رمزگذاری SSL نیاز دارد، در اینجا روش ارسال ایمیل در پایتون آمده است:

import smtplib
import ssl

context = ssl.create_default_context()

server = smtplib.SMTP_SSL('smtp.domain1.com', 465, context=context)  
server.login('(email protected)', 'my_password')

message = "Subject: SSL Encrypted Email."
server.sendmail('(email protected)', '(email protected)', message)

server.quit()

برای اتصالات TLS، شما نیاز دارید smtplib کتابخانه:

import smtplib

server = smtplib.SMTP('smtp.domain1.com', 587)  
server.starttls()  
server.login('(email protected)', 'my_password')

message = "Subject: TLS Encrypted Email."
server.sendmail('(email protected)', '(email protected)', message)

server.quit()

برای رمزگذاری انتها به انتها، به کتابخانه ها یا ابزارهای پیشرفته تری مانند GnuPG، OpenSSL، پروتکل سیگنال و غیره نیاز دارید.

ترکیب احراز هویت و رمزگذاری

امنیت ایمیل با پایتون هم به رمزگذاری و هم احراز هویت نیاز دارد. این تضمین می‌کند که سرورهای ایمیل ایمیل را قانونی می‌دانند و از مهاجمان سایبری و دسترسی‌های غیرمجاز در طول انتقال در امان می‌مانند. برای رمزگذاری ایمیل، می توانید از SSL یا TLS استفاده کنید و آن را با احراز هویت SMTP ترکیب کنید تا یک اتصال ایمیل قوی برقرار کنید.

اکنون که می‌دانید چگونه رمزگذاری ایمیل و احراز هویت را در ایمیل‌های خود فعال کنید، بیایید چند نمونه کد کامل را بررسی کنیم تا بفهمیم چگونه می‌توانید ایمیل‌های امن را در پایتون با استفاده از Gmail SMTP و رمزگذاری ایمیل (SSL) ارسال کنید.

نمونه های کد

1. ارسال یک ایمیل متنی ساده

import smtplib
from email.mime.text import MIMEText

subject = "Plain Text Email"
body = "This is a plain text email using Gmail SMTP and SSL."
sender = "(email protected)"
receivers = ("(email protected)", "(email protected)")
password = "my_password"

def send_email(subject, body, sender, receivers, password):
    msg = MIMEText(body)

    msg('Subject') = subject
    msg('From') = sender
    msg('To') = ', '.join(receivers)

with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp_server:
    smtp_server.login(sender, password)
    smtp_server.sendmail(sender, receivers, msg.as_string()) 

    print("The plain text email is sent successfully!")

send_email(subject, body, sender, receivers, password)

توضیح:

  • sender: این شامل آدرس فرستنده است.
  • receivers: این شامل آدرس های ایمیل گیرنده 1 و گیرنده 2 است.
  • msg: این محتوای ایمیل است.
  • sendmail(): این روش نمونه شی SMTP است. سه پارامتر فرستنده، گیرنده و پیام را می گیرد و پیام را می فرستد.
  • with: این یک مدیر زمینه است که برای بستن صحیح اتصال SMTP پس از ارسال ایمیل استفاده می شود.
  • MIMEText: این فقط متن ساده را نگه می دارد.
پیشنهاد می‌کنیم بخوانید:  چگونه یک سیستم بانکداری آنلاین بسازیم – آموزش برنامه نویسی شی گرا پایتون

2. ارسال یک ایمیل با فایل های پیوست

برای ارسال ایمن ایمیل در پایتون با پیوست‌ها، به تعدادی کتابخانه اضافی مانند MIMEBase و رمزگذارها نیاز دارید. در اینجا کد این مورد است:

import smtplib
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

sender = "(email protected)"
password = "my_password"
receiver = "(email protected)"
subject = "Email with Attachments"
body = "This is an email with attachments created in Python using Gmail SMTP and SSL."

with open("attachment.txt", "rb") as attachment:
    part = MIMEBase("application", "octet-stream")   
    part.set_payload(attachment.read())
    
encoders.encode_base64(part)
part.add_header(
    "Content-Disposition",  
    f"attachment; filename='attachment.txt'",
)

message = MIMEMultipart()
message('Subject') = subject
message('From') = sender
message('To') = receiver
html_part = MIMEText(body)
message.attach(html_part)   
message.attach(part)
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
    server.login(sender, password)
    server.sendmail(sender, receiver, message.as_string())

توضیح:

  • MIMEMultipart: این کتابخانه به شما امکان می دهد متن و پیوست ها را به طور جداگانه به ایمیل اضافه کنید.
  • ‘rb’: حالت باینری را برای باز کردن پیوست و خواندن محتوا نشان می دهد.
  • MIMEBase: این شی برای هر نوع فایلی قابل اجرا است.
  • Encode and Base64: فایل برای ارسال ایمن ایمیل در Base64 کدگذاری می شود.

ارسال ایمیل HTML در پایتون

برای ارسال ایمیل HTML در پایتون با استفاده از Gmail SMTP، به یک کلاس نیاز دارید – MIMEText.

در اینجا کد کامل برای پایتون ایمیل HTML ارسال می کند:

import smtplib
from email.mime.text import MIMEText

sender = "(email protected)"
password = "my_password"

receiver = "(email protected)"
subject = "HTML Email in Python"

body = """
<html>
  <body>
    <p>HTML email created in Python with SSL and Gmail SMTP.</p>
  </body>
</html>
"""

message = MIMEText(body, 'html')    

message('Subject') = subject
message('From') = sender
message('To') = receiver

with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
   server.login(sender, password)
   server.sendmail(sender, receiver, message.as_string())

تست ایمیل خود با احراز هویت و رمزگذاری

آزمایش ایمیل های خود قبل از ارسال آنها به گیرندگان مهم است. این به شما امکان می دهد هر گونه مشکل یا اشکال در ارسال ایمیل یا قالب بندی، محتوا و غیره را کشف کنید.

بنابراین، همیشه ایمیل های خود را تست کنید روی یک سرور مرحله‌بندی قبل از تحویل آن‌ها به گیرندگان هدف، به‌ویژه هنگام ارسال ایمیل‌های انبوه. ایمیل های آزمایشی مزایای زیر را ارائه می دهند:

  • اطمینان حاصل می کند که عملکرد ارسال ایمیل به خوبی کار می کند
  • ایمیل ها قالب بندی مناسبی دارند و هیچ لینک یا پیوست خرابی ندارند
  • از پر شدن صندوق ورودی گیرنده با تعداد زیادی ایمیل آزمایشی جلوگیری می کند
  • تحویل ایمیل را افزایش می دهد و نرخ هرزنامه را کاهش می دهد
  • اطمینان حاصل می کند که ایمیل و محتوای آن در برابر حملات و دسترسی غیرمجاز محافظت می شود

برای آزمایش این تنظیمات ترکیبی ارسال ایمیل در پایتون با احراز هویت و رمزگذاری فعال، از یک سرور تست ایمیل مانند Mailtrap Email Testing استفاده کنید. این کار تمام ترافیک SMTP را از محیط مرحله‌بندی ضبط می‌کند و ایمیل‌های شما را قبل از ارسال آن‌ها شناسایی و رفع اشکال می‌کند. همچنین محتوای ایمیل را تجزیه و تحلیل می‌کند، CSS/HTML را تایید می‌کند و امتیاز اسپم را ارائه می‌کند تا بتوانید ارسال ایمیل خود را بهبود بخشید.

برای شروع:

  • باز کنید تست ایمیل Mailtrap
  • به “صندوق ورودی من” بروید
  • کلیک کنید روی “نمایش اعتبار” برای دریافت اعتبار آزمایشی – جزئیات ورود و رمز عبور

در اینجا نمونه کد کامل برای آزمایش ایمیل های شما آمده است:

import smtplib
from socket import gaierror

port = 2525  
smtp_server = "sandbox.smtp.mailtrap.io"
login = "xyz123"  
password = "abc$$"  
sender = "(email protected)"
receiver = "(email protected)"

message = f"""\
Subject: Hello There!
To: {receiver}
From: {sender}
This is a test email."""

try:
    with smtplib.SMTP(smtp_server, port) as server:  
        server.login(login, password)
        server.sendmail(sender, receiver, message)
    print('Sent')

except (gaierror, ConnectionRefusedError):  
    print('Unable to connect to the server.')

except smtplib.SMTPServerDisconnected:
    print('Server connection failed!')

except smtplib.SMTPException as e:
    print('SMTP error: ' + str(e))

اگر خطایی وجود نداشته باشد، باید این پیام را در صندوق ورودی گیرنده مشاهده کنید:

This is a test email.

بهترین روش ها برای ارسال ایمن ایمیل

موارد زیر را در نظر بگیرید بهترین روش های ایمیل پایتون برای ارسال امن ایمیل:

  • محافظت از داده ها: اقدامات امنیتی مناسبی را برای محافظت از داده‌های حساس خود مانند اعتبارنامه‌های SMTP، کلیدهای API و غیره انجام دهید. آنها را در مکانی امن و خصوصی مانند فایل‌های پیکربندی یا متغیرهای محیط ذخیره کنید تا اطمینان حاصل کنید که هیچ‌کس نمی‌تواند به طور عمومی به آنها دسترسی داشته باشد.

  • رمزگذاری و احراز هویت: همیشه از رمزگذاری و احراز هویت ایمیل استفاده کنید تا فقط افراد مجاز بتوانند به ایمیل شما و محتوای آنها دسترسی داشته باشند.

    برای احراز هویت، می‌توانید از روش‌های پیشرفته مانند کلیدهای API، احراز هویت دو مرحله‌ای، علامت واحد استفاده کنید.روی (SSO) و غیره. به طور مشابه، از تکنیک های رمزگذاری پیشرفته مانند SSL، TLS، E2EE و غیره استفاده کنید.

  • رسیدگی به خطا: مشکلات شبکه، خطاهای احراز هویت و سایر مسائل را با مدیریت موثر خطاها با استفاده از except/try بلوک در کد شما

  • نرخ محدود: با محدود کردن سرعت عملکرد ارسال ایمیل برای جلوگیری از فراتر رفتن از محدودیت های خدمات خود، قابلیت تحویل ایمیل بالا را حفظ کنید.

  • اعتبارسنجی ایمیل ها: آدرس‌های ایمیل را از لیست خود اعتبارسنجی کنید و آدرس‌های نامعتبر را حذف کنید تا قابلیت ارسال ایمیل را افزایش دهید و از علامت‌گذاری دامنه شما به عنوان هرزنامه جلوگیری کنید. برای این کار می توانید از ابزار اعتبارسنجی ایمیل استفاده کنید.

  • آموزش دهید: تیم خود را با شیوه های ایمیل ایمن و خطرات امنیت سایبری به روز نگه دارید. امتیاز اسپم و نرخ تحویل ایمیل خود را کنترل کنید و برای بهبود آنها تلاش کنید.

بسته بندی

ارسال ایمن ایمیل با پایتون با استفاده از روش های پیشرفته رمزگذاری ایمیل مانند SSL، TLS، و رمزگذاری انتها به انتها، و همچنین پروتکل ها و تکنیک های احراز هویت مانند کلیدهای SPF، DMARC، 2FA و API.

با ترکیب این اقدامات امنیتی، می توانید از اطلاعات ایمیل محرمانه خود محافظت کنید، قابلیت تحویل ایمیل را بهبود بخشید و اعتماد را با گیرندگان هدف خود حفظ کنید. به این ترتیب فقط افراد دارای اعتبار مناسب می توانند به آن دسترسی داشته باشند. این به جلوگیری از دسترسی غیرمجاز، نقض داده ها و سایر حملات امنیت سایبری کمک می کند.



منتشر شده در 1403-09-26 00:50:25

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید