关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

25端口是什么端口服务?如果没开启25端口怎么发邮件?

发布时间:2021-07-13 10:30:53

25端口是什么端口服务?25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件。25端口被很多木马程序所开放,比如Ajan、Antigen、Email Password Sender、ProMail、trojan、Tapiras、Terminator、WinPC、WinSpy等等。拿WinSpy来说,通过开放25端口,可以监视计算机正在运行的所有窗口和模块。


1.jpg


为什么很多服务器或邮件服务商都禁25端口?


25是邮件专用端口,很少服务器开设了邮件服务,所以都关闭了,更为主要原因是因为25端口通常为SMTP协议,很多商家都用来做为邮件群发,所以阿里云都默认禁用25端口,无法使用TCP 25端口连接外部地址。


就连腾讯云也于2017年9月10日后对云主机25端口进行了限制,所以使用邮件发送一般我们可以使用企业邮件,直接用腾讯云企业邮箱免费版或阿里云企业邮件发送邮件即可!


如果服务商没开启25端口怎么发邮件?


服务器的安全组有没有开放25,如果没开启25端口可以用其它端口发送邮件,比如:465端口,所以不建议使用25端口发邮件。


推荐使用465端口发送邮件,PHP的有一个PHPMailer扩展,可以使用composer加载一下!


本着服务器安全的原则,云服务器上的端口非必要的服务就不要开启。因此,如果用户有邮件传送需求,可以开启25端口,没有的话最好禁用。


阿里云喜欢用安全组屏蔽端口,于是我就赶紧去配置了安全规则。进站出站都配置了,结果还是不行,然后索性把防火墙也关了,依旧不行。经过一番折腾,发现阿里自带屏蔽25端口。简直尴尬,后来找了阿里的一些规则文档,发现需要申请开通屏蔽端口。但是经过咨询了阿里工作人员,发现现在已经不开放25端口,因为什么《互联网信息服务管理办法》、《中国互联网协会反垃圾邮件规范》均对垃圾邮件进行说明与管理规范。让我考虑SSL加密SMTP通过465端口进行发件。然后试了一波,发现465发送不了QQ邮件,尝试了587端口竟然发送成功了


System.Net.Mail 空间的代码如下:


public static bool SendTheMail(string strto, string subj, string bodys)


{


SmtpClient _smtpClient = new SmtpClient();


_smtpClient.EnableSsl = true;


_smtpClient.UseDefaultCredentials = false;


_smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;


_smtpClient.Host = "smtp.qq.com";


_smtpClient.Port = 587;


_smtpClient.Credentials = new System.Net.NetworkCredential("aaa@qq.com", "666");


//密码不是QQ密码,是qq账户设置里面的POP3/SMTP服务生成的key



MailMessage _mailMessage = new MailMessage("aaa@qq.com", "888@yeah.net");


_mailMessage.Subject = subj;//主题 


_mailMessage.Body = bodys;//内容


_mailMessage.BodyEncoding = Encoding.Default;//正文编码 


_mailMessage.IsBodyHtml = true;//设置为HTML格式 


_mailMessage.Priority = MailPriority.High;//优先级 



try


{


_smtpClient.Send(_mailMessage);


Console.WriteLine("发送成功");


return true;


}


catch (Exception e)


{


Console.WriteLine("发送失败");


throw e;


}


}

 


还有一种方法:


这个方式是官方给的,主要是通过System.Web.Mail.MailMessage来实现发送,大家把这个方法放到自己的项目里面调用就好


 /// <summary>


/// 通过System.Web.Mail.MailMessage去发送,可以不被阿里云限制25端口的使用


/// 暂时一般都用465端口


/// </summary>


/// <param name="smtpserver">SMTP服务,譬如:smtp.126.com</param>


/// <param name="userName">发件箱</param>


/// <param name="pwd">密码</param>


/// <param name="nickName">昵称</param>


/// <param name="strfrom">发件箱</param>


/// <param name="strto">收件箱</param>


/// <param name="MessageSubject">主题</param>


/// <param name="MessageBody">内容</param>


/// <param name="SUpFile">附件</param>


/// <param name="port">端口</param>


/// <param name="enablessl">SSL加密</param>


/// <returns></returns>


public static bool SendWebEmail(string smtpserver, string userName, string pwd, string nickName, string strfrom, string strto,


    string MessageSubject, string MessageBody, string SUpFile, int port, int enablessl = 0)


{


    System.Web.Mail.MailMessage mmsg = new System.Web.Mail.MailMessage();


    //邮件主题


    mmsg.Subject = MessageSubject;


    mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;


    //邮件正文


    mmsg.Body = MessageBody;


    //正文编码


    mmsg.BodyEncoding = Encoding.UTF8;


    //优先级


    mmsg.Priority = System.Web.Mail.MailPriority.High;




    System.Web.Mail.MailAttachment data = null;


    if (SUpFile != "")


    {


        SUpFile = HttpContext.Current.Server.MapPath(SUpFile);//获得附件在本地地址


        System.Web.Mail.MailAttachment attachment = new System.Web.Mail.MailAttachment(SUpFile); //create the attachment


        mmsg.Attachments.Add(attachment); //add the attachment


    }


    //发件者邮箱地址


    mmsg.From = string.Format("\"{0}\"<{1}>",nickName, strfrom);




    //收件人收箱地址


    mmsg.To = strto;


    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");


    //用户名


    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);


    //密码


    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", pwd);


    //端口


    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", port);


    //使用SSL


    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", (enablessl == 1 ? "true" : "false"));


    //Smtp服务器


    System.Web.Mail.SmtpMail.SmtpServer = smtpserver;


    try


    {


        System.Web.Mail.SmtpMail.Send(mmsg);


    }


    catch (Exception ex)


    {


        LogHelper.Error(ex.ToString());


        return false;


    }


    return true;


}

 


自己亲测试过可以用!


下面我们介绍下服务器常用的端口说明:


21:FTP,FTP服务器所开放的端口,用于上传、下载。


22:SSH,22端口就是SSH 端口,用于通过命令行模式远程连接 Linux系统服务器。


80:HTTP,用于网站服务例如 IIS、Apache、Nginx 等提供对外访问。


110:POP3,110 端口是为 POP3(邮件协议 3)服务开放的。


443:HTTPS,网页浏览端口,能提供加密和通过安全端口传输的另一种 HTTP。


3306:MySQL,3306 端口,是 MySQL 数据库的默认端口,用于 MySQL 对外提供服务。


3389:Windows远程桌面服务,3389端口是 Windows 2000(2003) Server 远程桌面的服务端口,可以通过这个端口,用“远程桌面”连接工具来连接到云主机。


易探云免备案服务器,安全稳定、速度快、易操作,专业技术7×24小时服务。高性价比香港、美国云服务器,购买链接:https://www.yitanyun.com/server/buy.html


/template/Home/ZdsjuAE/PC/Static