What causes the colors seen during a sunset / sunrise?
There are many references about this on the web, such as Wikipedia and the NOAA site.

At sunrise and sunset the angle the Sun's light makes with the Earth at those locations is low compared with angle the light makes at midday. Because of the low angle, the light has to travel through more of the atmosphere before it reaches the Earth's surface and the eyes of anyone watching either the Sun rise or the Sun set.

The colour of the Sun's light is white, being composed of the colours of the light spectrum: red, orange, yellow, green, blue, indigo and violet. The wavelength of these component colours are all different. Red has the longest wavelength at 650 nm. Each of the other colours have shorter wavelengths with violet having the shortest at 400 nm.

As the Sun's light passes through the atmosphere it get scattered by the air molecules and particles in the air such as dust and aerosols. 

Due to a phenomenon known as Rayleigh scattering the shorter wavelengths of light (greens, blues, violets) are scattered first, leaving the shorter wavelengths (yellows, oranges and reds) to travel further.

The greater the amount of particles in the air, dust and aerosols, the greater the degree of scattering and the more red the sunrises and sunsets will appear. This is particularly evident after large amounts of ash have been ejected by volcanoes, after large forest fires and in locations where air pollution, particularly from industrial chimney stacks and internal combustion engines from road vehicles is a major source of airborne particulate matter such as soot or ash and other very small products of combustion