Wednesday, November 20, 2013

Why email is hard, part 3: MIME

This post is part 3 of an intermittent series exploring the difficulties of writing an email client. Part 1 describes a brief history of the infrastructure. Part 2 discuses internationalization. This post discusses MIME, the mechanism by which email evolves beyond plain text.

MIME, which stands for Multipurpose Internet Mail Extensions, is primarily dictated by a set of 5 RFCs: RFC 2045, RFC 2046, RFC 2047, RFC 2048, and RFC 2049, although RFC 2048 (which governs registration procedures for new MIME types) was updated with newer versions. RFC 2045 covers the format of related headers, as well as the format of the encodings used to convert 8-bit data into 7-bit for transmission. RFC 2046 describes the basic set of MIME types, most importantly the format of multipart/ types. RFC 2047 was discussed in my part 2 of this series, as it discusses encoding internationalized data in headers. RFC 2049 describes a set of guidelines for how to be conformant when processing MIME; as you might imagine, these are woefully inadequate for modern processing anyways. In practice, it is only the first three documents that matter for building an email client.

There are two main contributions of MIME, which actually makes it a bit hard to know what is meant when people refer to MIME in the abstract. The first contribution, which is of interest mostly to email, is the development of a tree-based representation of email which allows for the inclusion of non-textual parts to messages. This tree is ultimately how attachments and other features are incorporated. The other contribution is the development of a registry of MIME types for different types of file contents. MIME types have promulgated far beyond just the email infrastructure: if you want to describe what kind of file binary blob is, you can refer to it by either a magic header sequence, a file extension, or a MIME type. Searching for terms like MIME libraries will sometimes refer to libraries that actually handle the so-called MIME sniffing process (guessing a MIME type from a file extension or the contents of a file).

MIME types are decomposable into two parts, a media type and a subtype. The type text/plain has a media type of text and a subtype of plain, for example. IANA maintains an official repository of MIME types. There are very few media types, and I would argue that there ought to be fewer. In practice, degradation of unknown MIME types means that there are essentially three "fundamental" types: text/plain (which represents plain, unformatted text and to which unknown text/* types degrade), multipart/mixed (the "default" version of multipart messages; more on this later), and application/octet-stream (which represents unknown, arbitrary binary data). I can understand the separation of the message media type for things which generally follow the basic format of headers+body akin to message/rfc822, although the presence of types like message/partial that don't follow the headers+body format and the requirement to downgrade to application/octet-stream mars usability here. The distinction between image, audio, video and application is petty when you consider that in practice, the distinction isn't going to be able to make clients give better recommendations for how to handle these kinds of content (which really means deciding if it can be displayed inline or if it needs to be handed off to an external client).

Is there a better way to label content types than MIME types? Probably not. X.400 (remember that from my first post?) uses OIDs, in line with the rest of the OSI model, and my limited workings with other systems that use these OIDs is that they are obtuse, effectively opaque identifiers with no inherent semantic meaning. People use file extensions in practice to distinguish between different file types, but not all content types are stored in files (such as multipart/mixed), and the MIME types is a finer granularity to distinguish when needing to guess the type from the start of a file. My only complaints about MIME types are petty and marginal, not about the idea itself.

No, the part of MIME that I have serious complaints with is the MIME tree structure. This allows you to represent emails in arbitrarily complex structures… and onto which the standard view of email as a body with associated attachments is poorly mapped. The heart of this structure is the multipart media type, for which the most important subtypes are mixed, alternative, related, signed, and encrypted. The last two types are meant for cryptographic security definitions [1], and I won't cover them further here. All multipart types have a format where the body consists of parts (each with their own headers) separated by a boundary string. There is space before and after the last parts which consists of semantically-meaningless text sometimes containing a message like "This is a MIME message." meant to be displayed to the now practically-non-existent crowd of people who use clients that don't support MIME.

The simplest type is multipart/mixed, which means that there is no inherent structure to the parts. Attachments to a message use this type: the type of the message is set to multipart/mixed, a body is added as (typically) the first part, and attachments are added as parts with types like image/png (for PNG images). It is also not uncommon to see multipart/mixed types that have a multipart/mixed part within them: some mailing list software attaches footers to messages by wrapping the original message inside a single part of a multipart/mixed message and then appending a text/plain footer.

multipart/related is intended to refer to an HTML page [2] where all of its external resources are included as additional parts. Linking all of these parts together is done by use of a cid: URL scheme. Generating and displaying these messages requires tracking down all URL references in an HTML page, which of course means that email clients that want full support for this feature also need robust HTML (and CSS!) knowledge, and future-proofing is hard. Since the primary body of this type appears first in the tree, it also makes handling this datatype in a streaming manner difficult, since the values to which URLs will be rewritten are not known until after the entire body is parsed.

In contrast, multipart/alternative is used to satisfy the plain-text-or-HTML debate by allowing one to provide a message that is either plain text or HTML [3]. It is also the third-biggest failure of the entire email infrastructure, in my opinion. The natural expectation would be that the parts should be listed in decreasing order of preference, so that streaming clients can reject all the data after it finds the part it will display. Instead, the parts are listed in increasing order of preference, which was done in order to make the plain text part be first in the list, which helps increase readability of MIME messages for those reading email without MIME-aware clients. As a result, streaming clients are unable to progressively display the contents of multipart/alternative until the entire message has been read.

Although multipart/alternative states that all parts must contain the same contents (to varying degrees of degradation), you shouldn't be surprised to learn that this is not exactly the case. There was a period in time when spam filterers looked at only the text/plain side of things, so spammers took to putting "innocuous" messages in the text/plain half and displaying the real spam in the text/html half [4] (this technique appears to have died off a long time ago, though). In another interesting case, I received a bug report with a message containing an image/jpeg and a text/html part within a multipart/alternative [5].

To be fair, the current concept of emails as a body with a set of attachments did not exist when MIME was originally specified. The definition of multipart/parallel plays into this a lot (it means what you think it does: show all of the parts in parallel… somehow). Reading between the lines of the specification also indicates a desire to create interactive emails (via application/postscript, of course). Given that email clients have trouble even displaying HTML properly [6], and the fact that interactivity has the potential to be a walking security hole, it is not hard to see why this functionality fell by the wayside.

The final major challenge that MIME solved was how to fit arbitrary data into a 7-bit format safe for transit. The two encoding schemes they came up with were quoted-printable (which retains most printable characters, but emits non-printable characters in a =XX format, where the Xs are hex characters), and base64 which reencodes every 3 bytes into 4 ASCII characters. Non-encoded data is separated into three categories: 7-bit (which uses only ASCII characters except NUL and bare CR or LF characters), 8-bit (which uses any character but NUL, bare CR, and bare LF), and binary (where everything is possible). A further limitation is placed on all encodings but binary: every line is at most 998 bytes long, not including the terminating CRLF.

A side-effect of these requirements is that all attachments must be considered binary data, even if they are textual formats (like source code), as end-of-line autoconversion is now considered a major misfeature. To make matters even worse, body text for formats with text written in scripts that don't use spaces (such as Japanese or Chinese) can sometimes be prohibited from using 8-bit transfer format due to overly long lines: you can reach the end of a line in as few as 249 characters (UTF-8, non-BMP characters, although Chinese and Japanese typically take three bytes per character). So a single long paragraph can force a message to be entirely encoded in a format with 33% overhead. There have been suggestions for a binary-to-8-bit encoding in the past, but no standardization effort has been made for one [7].

The binary encoding has none of these problems, but no one claims to support it. However, I suspect that violating maximum line length, or adding 8-bit characters to a quoted-printable part, are likely to make it through the mail system, in part because not doing so either increases your security vulnerabilities or requires more implementation effort. Sending lone CR or LF characters is probably fine so long as one is careful to assume that they may be treated as line breaks. Sending a NUL character I suspect could cause some issues due to lack of testing (but it also leaves room for security vulnerabilities to ignore it). In other words, binary-encoded messages probably already work to a large degree in the mail system. Which makes it extremely tempting (even for me) to ignore the specification requirements when composing messages; small wonder then that blatant violations of specifications are common.

This concludes my discussion of MIME. There are certainly many more complaints I have, but this should be sufficient to lay out why building a generic MIME-aware library by itself is hard, and why you do not want to write such a parser yourself. Too bad Thunderbird has at least two different ad-hoc parsers (not libmime or JSMime) that I can think of off the top of my head, both of which are wrong.

[1] I will be covering this in a later post, but the way that signed and encrypted data is represented in MIME actually makes it really easy to introduce flaws in cryptographic code (which, the last time I surveyed major email clients with support for cryptographic code, was done by all of them).
[2] Other types are of course possible in theory, but HTML is all anyone cares about in practice.
[3] There is also text/enriched, which was developed as a stopgap while HTML 3.2 was being developed. Its use in practice is exceedingly slim.
[4] This is one of the reasons I'm minded to make "prefer plain text" do degradation of natural HTML display instead of showing the plain text parts. Not that cleanly degrading HTML is easy.
[5] In the interests of full disclosure, the image/jpeg was actually a PNG image and the HTML claimed to be 7-bit UTF-8 but was actually 8-bit, and it contained a Unicode homograph attack.
[6] Of the major clients, Outlook uses Word's HTML rendering engine, which I recall once reading as being roughly equivalent to IE 5.5 in capability. Webmail is forced to do their own sanitization and sandboxing, and the output leaves something to desire; Gmail is the worst offender here, stripping out all but inline style. Thunderbird and SeaMonkey are nearly alone in using a high-quality layout engine: you can even send a <video> in an email to Thunderbird and have it work properly. :-)
[7] There is yEnc. Its mere existence does contradict several claims (for example, that adding new transfer encodings is infeasible due to install base of software), but it was developed for a slightly different purpose. Some implementation details are hostile to MIME, and although it has been discussed to death on the relevant mailing list several times, no draft was ever made that would integrate it into MIME properly.

70 comments:

Anonymous said...

Just a heads up, the first part of your articles is unreadable (black text on black background)

Using Firefox 25.0.1, Windows 7. I initially viewed with javascript disabled (via NoScript), but even with scripts enabled, the layout doesn't seem to change.

Anonymous said...

Since email specifications are so difficult and broken, is there any work on a new, incompatible specification for a similar system designed for the actual use case?

Joshua Cranmer said...

I'm not aware of any standardization work on post-MIME/SMTP/IMAP redesigns of email, and it is highly unlikely that such a thing will come about. An incompatible specification is almost certainly dead-on-arrival, and any updates has to provide extremely clear and strong benefits to be adopted. Specifications with only marginal benefits are unlikely to be adopted quickly--look at, e.g., IMAP CONVERT extension.

anushya said...

The above information is helpful to me. thanks for sharing this concept briefly.
QTP Training in Chennai
Qtp classes in chennai
qtp training institute in chennai with placement
Best QTP Training Center in Chennai
QTP Training in Tambaram
QTP Training in OMR
QTP Training in T Nagar
QTP Training in anna nagar

Apple Blossoms said...

Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is fantastic, let alone the content!

3D animation Company
Chatbot Development Company
Android app development in Coimbatore

Soulblu said...

Thanks for sharing excellent information. keep on sharing such useful info E Cigarette Australia

James David said...

Freelance maintenance technicians also benefit from establishing relationships with multiple clients. Working as a freelancer, you’ll gain employment experience with a variety of businesses, boosting your overall skill set and providing you with more work opportunities in the future.

maintenance technician

Tuckerjackk said...

Team Work
Spreaker
Fancy
JAy Cross
Sleek
Mix
Ello
Jay Cross
Wattpad

Unknown said...

Click for more
Click for more
Click for more
Click for more
Click for more
Click for more
Click for more
Click for more
Click for more
Click for more

ROHIT RAJWANI said...

If you want to watch free TV shows and movies using streaming websites then there is no alternative as compared to putlocker. Also, we made a list of alternatives like Putlocker sites that you can use to stream movies and TV shows.

Here is the official Putlocker website with a lot of trending and popular movies to watch.

Hosting companies and law enforcement are always taking down free streaming sites, including long-time favorite Putlockers. So what are you supposed to do when your usual top pick for free streaming isn’t working anymore?

Don’t put away that popcorn just yet! I tested 47 leading streaming sites for safety, usability, and speed. After careful review and ranking based on streaming catalog size, content, and quality, I’ve found offical proxy site of Putlockers.

McAfee Pro said...

Antivirus moreover squares malware that incorporates noxious sites, rootkits, Trojans, contaminations, and phishing plans. It gives you in-program reports about the perils it squares. McAfee Antivirus records the IP tends to related with the peril, which allows in fact learned customers to keep up a vital good ways from locales related with those addresses.
https://mcafeepro.com/

ROHIT RAJWANI said...

In October 2018, the MPAA's report on Online Notorious Markets to the United States Trade Representative, said that the conclusion of 123movies, 123movieshub, gostream, and gomovies, by walking of a criminal examination in Vietnam in 2018, was "a significant turn of events" in combating illicit film theft administrations. In any case, the MPAA report additionally noticed that various copycat locales had risen in any event in eight different nations. In November 2018 TorrentFreak revealed locales associated or like 123Movies, for example, WatchAsap had additionally been closed somewhere around the FBI, yet were re-coordinating to other document sharing destinations.

Singapore said...

Each year, the people of Singapore consume 0.5 litre of alcohol per capita, and this volume consists of 70.1% beer, 13.5% wine, 14.7% distilled spirits, 1.7% other alcohol.

Sakht Miller said...

Greetings, I’m John. I’m a writer living in London, UK. I am a fan of technology, writing. You can visit my store.
Office.com/setup
Norton.com/setup
Norton.com/setup
Office.com/setup
webroot.com/safe
mcafee.com/activate

techmanoj said...

Norton is the best option available in the market. Norton Antivirus is an effective anti-malware scanning engine that is reliable. Because millions of people are browsing the web every day.

norton.com/enroll

techmanoj said...

When it comes to preventing viruses coming through the Internet, we have the name Norton Antivirus, which we can fully rely on, which protects the Internet and our systems from anti-malware or viruses.

norton.com/enroll

techmanoj said...

Roku is a small class tool that lets you view free and paying video content over the Internet on your TV.

www.roku.com/link

techmanoj said...


The Roku Device No.1 is a streaming device that is very popular in the United States all over the world. Roku provides users with the best entertainment they have ever wanted. You can turn your computer on very quickly in easy steps.

roku com/link

techmanoj said...


Norton is a one of the best antivirus product, that have good capacity to fight with unwanted infection which can harm your computer and networks. Every user should have an antivirus program on their computer and Norton is a good choice.

norton.com/enroll

techmanoj said...


Roku is an official link that helps user to activate their roku device or TV. In order to activate roku tv or device, user should have roku activation code.

roku.com/link

techmanoj said...


Roku activation code is an alpha numeric code which helps users to enable their roku device or tv. If the activation phase has been completed, computer would require them to display their fav stuff online at one place.

roku.com/link

techmanoj said...


If you are a new user with Roku and want to setup your Roku Device, then you can follow the guidelines which is listed with user guide which you received with your purchase. If you are not able to find the user guide then search for step by step Roku device setup or Installation guide.

roku.com/link

techmanoj said...


Norton products are very effective for Internet threats. However the installation process of the Norton product is still easy for non-technical people or beginners find some obstacles with the install process.

norton.com/setup

techmanoj said...



Norton is an antivirus that can prevent attacks online, such as malicious ransomware, dangerous updates and hazardous websites. Across today’s environment, millions of people access the internet every day.

norton.com/enroll

molly miller said...

Webroot delivers next-generation endpoint security and threat intelligence services to protect businesses and individuals around the globe.
webroot.com/safe ,
www.webroot.com/safe


molly miller said...


Canon setup is a website to download Canon printer latest and updated drivers for Canon Printer direct download link.
canon.com/ijsetup ,
canon ij setup ,
canon ij printer setup ,

molly miller said...

office in its latest avatar is the coolest yet the most productive software available in the market. www.office.com/setup ,
office.com/setup , office.com setup ,
office setup

Alessia Martine said...

Office.com/setup – Microsoft Office was introduced about three decades ago with its three main applications MS Word, MS PowerPoint and MS Excel. Now, MS Office has a number of applications for desktop devices and also for mobile phones. The latest Microsoft Office suite is Office 2019 that has several specifications and upgraded features in terms of compatibility, ease of access and user-friendly interface. Some apps such as OneDrive, OneNote, MS Publisher received much appreciation from around the globe due to its widely renowned reliability and user-friendly features. The apps and programs of MS Office suite are very office friendly, and this is the reason, over one billion consumers are happily connected with its interface system either by the web-based Office version or its applications.

The complete Microsoft Office setup can be easily downloaded by the website links:
www.office.com/setup
office.com/setup

Alessia Martine said...

McAfee uses SIEM, artificial intelligence technology, and other security analytics tools to protect your online data and devices. Apart from stopping worms, viruses, rootkits, and Trojans, the antivirus package can defend your computer from all the latest threats. Additionally, the products of McAfee launched in the year 2020 have a gaming mode, which can silence any alerts and stop updates if the user is busy on another application. The McAfee products available at www.mcafee.com/activate are better at detecting the existing malware and identifying the new ones.

mcafee.com/activate
mcafee.com/activate

Alessia Martine said...

There are various subscriptions offered by the antivirus software Norton. Norton is capable of protecting all your handheld devices and computers. The antivirus software programs provide a comprehensive solution for all your needs related to cybersecurity. Moreover, the program offers a quick check for new viruses within every five to fifteen minutes, along with removing them. The innovative technology used in Norton prevents the keyloggers from tracking your online data. The wide range of Norton setup available at www.norton.com/setup keep all your data safe, including files and applications.

www.norton.com/setup
norton.com/setup

lily grace said...

canon.com/ijsetup offers the Printer Setup download link where you can install the printer setup further. With the online canon ij setup , the user can set up the Canon Printer Model. When you do connect the canon.comijsetup setup into your pc, your system does not need to install the driver on it. ij.start canon |
http //ij.start.canon |
https //ij.start.canon

lily grace said...

Webroot com safe antivirus program, you can protect your devices such as Windows, Mac and mobile devices from malware, virus, spyware, etc. Through the webroot com safe link, you can Install Webroot with key code on multiple devices and activate the software.
webroot.com/safe |
www.webroot.com/safe |
download webroot with key code

lily grace said...

Canon printer that can be downloaded via canon.com/ijsetup page is the best wireless printer that you can connect to your device and print data smoothly. Canon ijsetup CD is not the well-suited technique to use canon.comijsetup setup installation for longer.
canon.com/ijsetup |
canon.com/ijsetup |
conon ij printer setup

robertwilson said...

Trend Micro Inc. is a multinational cyber security and defense company with global headquarters in Tokyo, Japan and Irving, Texas, United States, with regional headquarters and centers in Asia, Europe, and North America.
www.trendmicro.com besbuypc | www.trendmicro.com/bestbuypc

robertwilson said...

Webroot delivers multi-vector protection for endpoints and networks and threat intelligence services to protect businesses and individuals in a connected world. Search for Webroot Mobile Security & Antivirus and install the app. After it finishes downloading, tap Open and accept the license agreement to begin setting up the app. Tap Activate to enter your keycode. If you see “fix this now” follow prompts to secure …
webroot.com/secure

robertwilson said...

The 123.hp.com/setup is actually a website which is set up by HP technicians to help people set up their HP Printer by downloading the printer drivers and other software through this website. On this website you can find directions on how you can connect your hp.com/support wirelessly, with help of USB cable and even things like how one can install a cartridge in the printer. www.hp.com/support | hp.com/support

Mark William said...

To activate the Microsoft Office, you are required to enter the product key. You will get the product key on the basis of your Office version. In case you have purchased a retail office.com/setup, then the activation key will be available inside the package. On the other side, the key will be sent to your registered email address if you brought an online version through www.office.com/setup . Here is the full breakdown of how the client can activate the Office on the desired system.

Mark William said...

Canon IJ Setup Network Tool is a utility software that allows you to change the Network settings of your printer The same one that you entered in ij.start canon to start the whole process Now, navigate to the Official website of Canon by inserting http //ij.start.canon in the address bar. Open any of the web browsers that you usually use on your computing device and put the web address https //ij.start.canon within the URL bar of your browser correctly.


www.McAfee.com said...

Go to mcafee.com/activate & enter the activation key to get protection. Download, install and activate McAfee

jacksmith1793 said...

Canon setup offers the Printer Setup download link where you can install the printer setup further. With the online, the user can set up the Canon Printer Model. canon.com/ijsetup

norton.com/setup said...

www.Norton.com/Setup - visit norton.com/setup to download, install and activate Norton setup on your system.www.Norton.com/Setup

fbees-office said...

www.office.com/setup 1. Go to office.com/setup for office setup.2.Sign In to your Microsoft Office Account.3.Find your Office Product Key.4.Enter your Microsoft Office Product Key.5.Download and Install Office.6.Run the Activation wizard.You are all done, Run Office Apps.www.office.com/setup

David root said...

McAfee.com/activate - Sign in, type the product key, and get McAfee protection. Visit Mcafee.com/activate to download, install and activate McAfee. McAfee provides a layer of protection to your Mobiles, PC, and Mac devices. It keeps away all malicious entities that are trying to reach your data, thereby, giving you a secure smart device usage.

Mark William said...

canon.comijsetup setup into your pc, your system does not need to install the driver on it. Canon printer that can be downloaded via page is the best wireless printer that you can connect to your device and print data smoothly. canon.com/ijsetup
CD is not the well-suited technique to use canon.comijsetup setup installation for longer.

Mark William said...

HP Laserjet Printer, you can print high-quality documents and graphic outputs using the wireless connection. This printer is designed considering the commercial requirements and comes with an embedded security package that protects the users from external threats.
123.hp.com/setup |
123.hp.com/laserjet

ethan hawke said...

Trend Micro Software, a highly rated antivirus software that can be easily installed and run fast. Within a few seconds, it can defend yourself and your family. You can plan it manually or you can Scan automatically. Trend Micro will continue to defend you day and night. However check out the Prerequisite before download and install Trend Micro on your PC.
www.trendmicro.com.au downloadme | www.trendmicro.com/downloadme |
trendmicro.com/downloadme

ethan hawke said...

Go to the retail store or visit the online store of www.mcafee.com/activate and then proceed for the McAfee activate process. McAfee offers protection from thousands or can say many viruses and threats.McAfee offers best virus protection features with mcafee.com/activate redeeming steps. Get it today and make your device protected.

lily grace said...

Canon printer that can be downloaded via canon.com/ijsetup page is the best wireless printer that you can connect to your device and print data smoothly. Canon ijsetup CD is not the well-suited technique to use canon.comijsetup setup installation for longer.
canon.com/ijsetup |
canon.com/ijsetup |
canon ij printer setup |
canon ij printer setup

lily grace said...

The hp123 is actually a website which is set up by HP technicians to help people set up their hp123.com/setup Printer by downloading the printer drivers and other software through this website.
hp123.com/setup |
123.hp.com/setup

lily grace said...

Access the Norton account by going to www.norton.com/enroll webpage and register your subscription. At norton.com/enroll URL, you can enroll Norton product and secure your data, devices, and other online works and network. Sign in to Norton, download, and install Norton.
norton.com/enroll |
www.norton.com/enroll

Webroot.com/safe Activation Setup said...

Go to webroot safe website www.webroot.com/safe or webroot.com/safe from your browser. Download, install and activate webroot at www.webroot.com/activate .This may be a best place to introduce yourself and your website or include some credits.
www.Webroot.com/Safe

Mark William said...

Trend Micro Software, a highly rated antivirus software that can be easily installed and run fast. Within a few seconds, it can defend yourself and your family. You can plan it manually or you can Scan automatically. Trend Micro will continue to defend you day and night. However check out the Prerequisite before download and install Trend Micro on your PC.
www.trendmicro.com.au downloadme | www.trendmicro.com/downloadme |
trendmicro.com/downloadme

Mark William said...

Canon IJ Setup Network Tool is a utility software that allows you to change the Network settings of your printer The same one that you entered in ij.start canon to start the whole process Now, navigate to the Official website of Canon by inserting ij.start.canon in the address bar. Open any of the web browsers that you usually use on your computing device and put the web address within the URL bar of your browser correctly ij start canon

Mark William said...

Norton offers support to install Norton internet security in your device from norton.com/setup the software on the computer the same way we, here at superb support, offer premium services to support the user to install www.norton.com/setup and other antivirus programs and other computer related issues.

lily grace said...

Canon printer that can be downloaded via canon.com/ijsetup page is the best wireless printer that you can connect to your device and print data smoothly. Canon ijsetup CD is not the well-suited technique to use canon.comijsetup setup installation for longer.
canon.com/ijsetup |
canon ij setup |
canon ij printer setup

lily grace said...

HULU ACTIVATION CODE - I/t has become very easy to get your code for the activation process of your Device just you need to follow some single step to unlock and active your Hulu Device
hulu.com/activate |
www.hulu.com/activate

lily grace said...

Access the Norton account by going to www.norton.com/enroll webpage and register your subscription. At norton.com/enroll URL, you can enroll Norton product and secure your data, devices, and other online works and network. Sign in to Norton, download, and install Norton.
norton.com/enroll |
www.norton.com/enroll

smithlio said...

123 hp com/setup - Find your HP printer model and download drivers. Need instant help to install or download drivers from 123 HP Setup page.

Mark William said...

Trend Micro Software, a highly rated antivirus software that can be easily installed and run fast. Within a few seconds, it can defend yourself and your family. You can plan it manually or you can Scan automatically. Trend Micro will continue to defend you day and night. However check out the Prerequisite before download and install Trend Micro on your PC.
www.trendmicro.com.au downloadme | www.trendmicro.com/downloadme |
trendmicro.com/downloadme

Mark William said...

Canon IJ Setup Network Tool is a utility software that allows you to change the Network settings of your printer The same one that you entered in ij.start canon to start the whole process Now, navigate to the Official website of Canon by inserting ij.start.canon in the address bar. Open any of the web browsers that you usually use on your computing device and put the web address within the URL bar of your browser correctly ij start canon

Mark William said...

Go to the retail store or visit the online store of www.mcafee.com/activate and then proceed for the McAfee activate process. McAfee offers protection from thousands or can say many viruses and threats.McAfee offers best virus protection features with mcafee.com/activate redeeming steps. Get it today and make your device protected.

www.norton.com/setup said...

Norton setup is a process where do you enter the Norton Setup Key at
www.norton.com/setup to activate & install Norton product. One can buy Norton from retail store or online. Now Symantec has started distributing product activation keys in the form of retail card. One has to scratch the Norton retail card to see the product activation key and go to the website norton.com/setup.www.Norton.com/Setup

www.norton.com/setup said...

Go to www.office.com/setup Sign in with your Microsoft account, or create one if you do not have one. Be certain to take into account this account so that you can install or reinstall Office later, without a product key.www.office.com/setup

johnpcexpert said...

Learn how to install Office at office setup for your PC or Mac. Go to www.office.com/setup and activate the product.

Unknown said...

It’s Great site sir,I am regularly following your site thanks for sharing with us. klickbazar.com

Troubleshooting for Fixing QuickBooks Error H202 and H505 said...

QuickBooks Error H202 and H505 usually occurs when any user tries to access the QuickBooks company file which is actually located on another computer. However, the cause of this error may not be initially apparent and can cause a lot of confusion. The reason for this can be one of the below mentioned:
• System firewall blocking communication process of QuickBooks.
• Incorrect DNS settings.
• Hosting settings not correct

Sakht Miller said...

I’m Sakht. I’m a writer living in London, UK. I am a fan of technology. You can visit my store.
office.com/setup
Norton.com/setup
mcafee.com/activate
mcafee.com/activate

liza martinee said...

Great information! I thankful to author of this blog who sharing such a useful information, I also subscribe your blog for all future post. I also have share some useful links here.
directoryxelt | directoryrelt

Susan Grealish said...

Good article! Thanks for sharing buy best laptops at Sovarup, a website for computers in melbourne

alicemartin said...

Thanks for sharing this marvelous post. I m very pleased to read this article.

office.com/setup
norton.com/setup
mcafee.com/activate
mcafee.com/activate
webroot.com/safe